2013-12-12 15 views
12

Chcę dodać indeksy dolne i górne do etykiet wykresu. Spróbowałem expression, ale to nie działa tak jak chcę z nowymi liniami (\n). Próbowałem naprawić to przy użyciu paste, ale to nie działa. Poniżej znajdują się niektóre z moich prób:Wyrażenie i nowa linia w etykietach działek

par(mfcol=c(1,3)) 
plot(1,1,main=expression("first line \n second line x"^2)) 
plot(1,1,main=expression(paste("first line \n second line", "x"^2))) 
plot(1,1,main=paste("first line \n second line", expression("x"^2))) 

Produkuje:

enter image description here

W pierwszych dwóch obrazów druga linia nie jest dobrze skoncentrowane, w trzecim jeden indeks górny zawiedzie. Jak uzyskać zarówno wyśrodkowaną linię, jak i indeksy dolne/górne?

+1

Dodatkowo: http://stackoverflow.com/questions/15297814/ include-text-control-characters-in-plotmath-wyrażeń? lq = 1 i http://stackoverflow.com/questions/13198170/combining-expression-with-n na ten sam temat. – plannapus

+1

Awans: obraz natychmiast pokazuje, znalazłeś właściwe pytanie :) – BurninLeo

Odpowiedz

18

Można wprowadzić podział wiersza wewnątrz wyrażenia: (. Używam bquote zamiast expression tutaj - zarówno do pracy, w tym przypadku)

bquote(atop("first line", 
      "second line" ~ x^2)) 

Execute demo(plotmath) aby uzyskać więcej informacji i patrzeć w dokumentacji dla atop.

boxplot najwyraźniej ma pewne problemy z interpretacją wyrażeń w tytule. Prosta poprawka polega na oddzielnym oznaczeniu tytułu:

+1

To dziwne: to rozwiązanie działa dobrze z 'plot', ale nie działa z' boxplot'. Mam wiadomość, że nie ma funkcji o nazwie "na szczycie". –

+0

@ MartaCz-C Ciekawy, masz rację. Jednak poprawka jest dość prosta - patrz zaktualizowana odpowiedź. –

7

Szybkie rozwiązanie polega na dodaniu spacji przed słowem "pierwszy".

Od plotmath nie obsługuje znaki nowej linii, można użyć mtext do tworzenia linii jeden za drugim jak ten:

plot(1,1) 
exp <- 2 
Lines <- list(bquote("first line"),bquote("second line x"^2)) 
mtext(do.call(expression, Lines),side=3,line=1:0) 

enter image description here

+2

Myślę, że widziałem to [gdzieś] (http://stackoverflow.com/a/15300449/1478381) przed ...! (to wciąż świetna odpowiedź) –

+0

@ SimonO101 dzięki i dobry połów :) – agstudy