2017-02-22 6 views
5

Po ustawieniu parametrów graficznych z par(fig) i zresetowaniu ich za pomocą oryginalnych parametrów, tekst na marginesach wykresów nie jest zapisywany. Dopiero po wykonaniu innej komendy niskiego poziomu w obszarze zostanie wykonany region kreślenia, który zadziała ponownie. Oto przykład:po par (rys.) Tekst na marginesach nie jest zapisany

dev.off() 
plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(fig=c(0.1,0.6,0.5,0.8), new=TRUE) 
par(op) 
mtext("hello ", adj=1, col=3)   # not written 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 
mtext("hello ", adj=1, col=3)   # still not written 
text(50,20,"") # or abline    # do something inside plot region 
mtext("hello   ", adj=1, col=3) # now it works! 

Może to być związane z innym pytaniem napisałem pod after par(fig), mtext is slightly off.

Poza tym mtext, axis również nie działa. Poza tym text/abline/points, title(main="dummy") również rozwiązuje problem.

Czy może to być błąd R? Czy może czegoś brakuje?

+0

Podejrzewam, że "par (op)" rozpoczyna nowy wątek. Zamień 'par (op)' na 'par (fig = op $ fig, nowy = TRUE)' i działa zgodnie z oczekiwaniami. –

+0

Teraz to jest interesujące! 'par (fig = op $ fig)' wystarcza bez 'new', btw .. To nie wyjaśnia, dlaczego działa w obszarze kreślenia, ale nie na marginesie, chociaż ... –

Odpowiedz

5

Próbne i błędne sprowadza się do par(mfg=c(1, 1, 1, 1)).

plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(op[names(op) == "mfg"]) 
mtext("bye ", adj=1, col=3)   # not written 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 

plot(1:10) 
op <- par(no.readonly = TRUE) 
mtext("hello", adj=1, col=2)   # written as expected 
par(op[names(op) != "mfg"]) 
mtext("bye ", adj=1, col=3)   # written as expected 
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region 

To nie jest dla mnie jasne, dlaczego ustawiając figurę być kreślone obok należy wyłączyć tekst drukowania na marginesie (ale nie na rysunku), a od mtext jest zaimplementowana w C, zajęłoby trochę wysiłku, aby pracować to.

Powiązane problemy