2017-01-15 15 views
5

Chciałbym, aby na moim wykresie pojawiły się znaki Unicode, jako część mieszanego ciągu znaków, na przykład ρ=0.84, gdzie 0.84 jest zapisany w zmiennej, powiedzmy cor.value.Znaki ggplot unicode bez Kairu?

To praktycznie wyklucza takie rozwiązania, jak expression lub bquote (sugerowane here). Nie wiem, czy działałyby same, ale próba połączenia ich z wartością zmiennej za pośrednictwem paste stanowi problem. Jedynym sposobem, w jaki mogłem go uruchomić, było użycie symbolu unicode w moim źródle. Pojawiło się nawet na działce w R Studio.

Ale kiedy próbowałem drukować, otrzymałem tylko ... Jedyna sugestia, jaką do tej pory znalazłem, to use Cairo, ale Kair miesza resztę mojego spisku, więc chcę trzymać się oryginalnego urządzenia pdf.

Czy jest jakaś szansa, używając Unicode lub czegoś innego, aby wydrukować ten ciąg na działce, ale nie używając Kairu?


Oto przykład tego, co robi Cairo (to ma być rogu wykresu, z szarą obwódką):

screenshot from Cairo

Częściowa kropka jest odcięty, nie obcięty. Tak więc, gdy jest on nałożony na granicę, granica jest nieco przesunięta, a kropki "pokazują" granicę (tutaj widać ją tylko na dole, gdzie indziej jest bardziej widoczna). Dolna i prawa krawędź jest grubsza niż lewa i górna granica. Bardzo jasnoszary pasek za kropką jest szerszy w Kairze. Te problemy nie występują w standardowym urządzeniu PDF.

Screenshot from standard

Obecnie pracuję w systemie Fedora 21, ale dokument ten musi również przygotować na Windows 8 lub 10, a najlepiej również w innych smakach Linux.


Oto kod dla działki (przeznaczony do oglądania w małych rozmiarach, około 2x1,5 cala). Obecny plan jest mieć tekst w zmiennej c.a i umieścić go gdzie etykieta oś będzie, ale chcę, aby moje opcje otwarte, aby adnotacja później:

offset.plotdata <- data.frame(understandability=c(2.95, 0.85, 0.75, 1.15, 2.25, 2.05, 1.95, 2.15, 2.25, 0.75, 2.05, 0.85), lowercase.pseudonym=c("A", "B", "C", "D", "E", "F", "A", "D", "E", "C", "F", "B"), questionnaire=c(rep("pre", 6), rep("post", 6))) 
offset.plotdata$decorative.points <- c(1,2,3,4,5,NA,1,2,3,4,5,NA) 
middle.blue <- "#2186D9" 
variable.name <- "understandability" 
cor.value <- 0.84 
c.a <- "rho = 0.84" 
ggplot(offset.plotdata, 
     aes_string(x="questionnaire", y=variable.name, 
        group="lowercase.pseudonym"))+ 
    geom_line(colour=middle.blue)+ 
    ylim(c(5,0.5))+ 
    theme_bw()+ 
    theme(panel.grid.major.y = element_line(size=5, color="#f8f8f8"), 
     panel.grid.minor.y=element_blank(), 
     panel.grid.major.x=element_blank(), 
     panel.grid.minor.x=element_blank(), 
     text = element_text(size=9), 
     axis.text=element_text(size=8), 
     axis.ticks.y=element_blank(), 
     plot.margin = unit(c(0,5,0,0), "mm") 
     #axis.title.y=element_text(margin=margin(0,20,0,0)) 
)+ 
    labs(y="Angekreuzte Option", x=as.character(c.a))+ 
    scale_x_discrete(expand = c(0,0), label=c("Vorher", "Nachher"))+ 
    #ggtitle("gepaarte Antworten")+ 
    geom_point(data=offset.plotdata, 
      aes(x=questionnaire,y=decorative.points), 
      fill=middle.blue, 
      colour=middle.blue, 
      size=5) 
+0

Nie wiem, ale czy możesz dodać trochę więcej o tym, w jaki sposób Kair manipuluje pozostałą częścią twojej fabuły? Być może ta część problemu jest naprawialna. Pomocne może być również dodanie informacji o twojej platformie (systemie operacyjnym i wersji), ponieważ niektóre z tych problemów dotyczą konkretnej platformy. –

+0

@BenBolker zaktualizowany. – rumtscho

+0

i dlaczego chce mieć mieszany ciąg zawierający informacje przechowywane w zmiennej reguły out przy użyciu 'expression()'/plotmath? np. cor.value <- 0,84; substitute (wyrażenie (rho = x), list (x = cor.value)) ' –

Odpowiedz

2

nie wiem dlaczego expression(...) nie działa (tzn jest drukowany greckich liter, ale nadal drukuje „ekspresja” jak dobrze) i skrót określający wyrażenie tyldą (~) nie działa, ale działa to dla mnie:

g0 <- [... the rest of the graph ...] 

cor.value <- 0.84 
c.a <- substitute(~rho == x, list(x=cor.value)) 
g0 + labs(y="Angekreuzte Option", x=c.a) 
+0

Dla mnie, który wypisze 'wyrażenie (ρ = 0,84)' na wykres.Konsola oddaje to również, gdy po prostu nazywam 'c.a', próbowałem namówić to użądlenie i użyć' substring', ale neiter 'cat' lub' as.character' daje tę reprezentację. – rumtscho

+0

Tak, skopiuj z tego miejsca. Jeśli użyję 'as.character', nic w ogóle nie zostanie wydrukowane na wykresie. – rumtscho

+0

2.2.0 tutaj, to było to, co przyszło przez packages.install (na R 3.2.2) – rumtscho