2013-03-08 17 views
8

Czy istnieje sposób na uzyskanie znaków sterujących dla ciągów tekstowych, np. "\n" dla newline oszacowane wewnątrz wyrażenia na powierzchni wydruku lub na odwrót. W poniższym przykładzie chciałbym połączyć:Zawiera znaki sterujące tekstem w wyrażeniach plotmath

  • niektórych znaków tekstu
  • znak kontrolny
  • tekst (znak nowej linii)
  • substytut nazwa zmiennej
  • zawierać wyraz plotmath

Po czytanie this question Mogę dostać większość drogi z substytutem, ale znak newline nie jest oceniany. Teraz kręcę się w kółko i mylić z plotmath, parse, bquote i substitute. W help page dla plotmath mówi

znaki sterujące (np \ n) nie są interpretowane w ciągi znaków w plotmath, w przeciwieństwie do normalnego kreślenia.

Czy to naprawdę niemożliwe?

lab = "some data" 
form = "Exponential" 
x = 1:10 
y = x^2 


plot(x , y , type = "b") 
title(main = substitute(paste("Plot of " , phi , " of: " , lab , "\nFunctional form: " , form) , list(lab = lab , form = form)) , adj = 0) 

enter image description here

Odpowiedz

9

Gdy zorientowali plotmath nie obsługuje nowe linie wewnątrz, ale można użyć mtext z bquote, aby napisać każdą linię. Na przykład utworzyć listę linii:

Lines <- list(bquote(paste("Plot of " , phi , " of: " , .(lab))), 
       bquote(paste("Functional form: " , .(form))) 

mtext(do.call(expression, Lines),side=3,line=1:0) 

enter image description here

+0

Twoje rozwiązanie działa po prostu doskonale! Dziękuję bardzo za brodzenie przez bagno "bquote" i wyrażeń matematycznych/tekstowych dla mnie! +1 –

2

Dla kompletności, tutaj jest inne rozwiązanie Unicode i bez wyrazu (przystosowaną od here i here):

plot(x, y, type="b") 
title(main=paste("Plot of \u03A6 of:", lab, "\nFunctional form:", form), adj=0) 

enter image description here

+0

+1 Dzięki. To ładne proste rozwiązanie. Nie wiedziałem nawet, że możliwe jest dołączanie znaków Unicode w ten sposób. Gdyby było możliwe podzielenie kredytu na zaakceptowane odpowiedzi, zrobiłbym to. Dzięki! –

+1

Mimo że niektóre platformy/urządzenia nie renderują poprawnie wszystkich znaków Unicode, dobrze jest mieć rozwiązania agstudy i baptystyczne, a także wrócić do nich, kiedy to się stanie. Zobacz [ten wpis na blogu] (http://bmb-common.blogspot.de/2011/05/unicode-symbols-in-r.html), aby uzyskać dodatkowe wskazówki. – plannapus

+0

Ah, dziękuję za wzniesione głowy. Prawdopodobnie uratowałbyś mi dodatkowe przyszłe bóle głowy, gdy nie mogę odtworzyć twojego rozwiązania. Jeszcze raz dziękuję i dziękuję za link. –

4

jeśli używasz grafiki siatki, to może być przydatna following grob do przestrzeni linie w zależności od ich wysokości,

library(devtools) 
source_gist(2732693) 
grid.expr(as.expression(Lines)) 

(przy użyciu linii agstudy za)