2017-01-15 5 views
5

Ich möchte Unicode-Zeichen in meinem Plot, als Teil einer gemischten Zeichenfolge, zum Beispiel ρ=0.84, wo die 0,84 in einer Variablen gespeichert wird, sagen wir cor.value.ggplot Unicode-Zeichen ohne Kairo?

Dies schließt praktisch Lösungen wie expression oder bquote (vorgeschlagen here) aus. Ich weiß nicht, ob sie alleine arbeiten würden, aber es ist ein Problem, sie mit dem Wert einer Variablen über paste zu kombinieren. Die einzige Möglichkeit, es zum Laufen zu bringen, bestand darin, das Unicode-Symbol in meiner Quelle zu verwenden. Es erschien sogar auf der Handlung in R Studio.

Aber als ich versuchte zu drucken, bekam ich nur .. statt. Der einzige Vorschlag, den ich bisher gefunden habe, ist use Cairo, aber Cairo ist der Rest meines Grundstücks, so dass ich mit dem Original-PDF-Gerät bleiben will.

Gibt es eine Chance, mit Hilfe von Unicode oder etwas anderem, diese Zeichenfolge innerhalb der Handlung gedruckt, aber nicht Kairo zu verwenden? Hier


ist ein Beispiel dafür, was Kairo tut (das soll eine Ecke des Diagramms sein, mit einem grauen Rand):

screenshot from Cairo

Der Teil Punkt abgeschnitten wird, nicht abgeschnitten. Wenn es mit dem Rand überlagert wird, ist der Rand leicht versetzt, und die Punkte "zeigen" durch den Rand (hier sehen Sie ihn nur auf der Unterseite, wo er besser sichtbar ist). Und der untere und rechte Rand sind dicker als der linke und obere Rand. Das sehr blasse graue Band hinter dem Punkt ist in Kairo breiter. Diese Probleme sind im Standard-PDF-Gerät nicht vorhanden.

Screenshot from standard

Ich arbeite derzeit an einem 21 Fedora-System, aber dieses Dokument muss auch auf Windows 8 oder 10 kompiliert und vorzugsweise auch auf anderen Linux-Varianten.


Hier ist der Code für die Handlung (soll in kleineren Größen, etwa 2x1,5 Zoll angesehen werden). Der aktuelle Plan ist, den Text in der c.a Variable haben und es zu platzieren, wo eine Achsenbeschriftung wäre, aber ich möchte meine Optionen offen halten später eine Anmerkung zu machen:

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

weiß nicht, aber können Sie ein bisschen mehr hinzufügen, wie Kairo den Rest Ihrer Handlung vermasselt? Vielleicht ist dieser Teil des Problems reparierbar. Es wäre wahrscheinlich auch hilfreich, Informationen über Ihre Plattform (Betriebssystem und Version) hinzuzufügen, da einige dieser Probleme plattformspezifisch sind. –

+0

@BenBolker aktualisiert. – rumtscho

+0

und warum möchte eine gemischte Zeichenfolge, die in einer Variablen gespeicherte Informationen enthält, mit 'expression()'/plotmath auskommen? z. B. cor.value <- 0,84; ersetze (Ausdruck (rho = x), Liste (x = cor.value)) ' –

Antwort

2

Ich weiß nicht, warum expression(...) funktioniert nicht (dh die griechischen Buchstaben druckt aber er druckt noch „Ausdruck“ als auch) und die Verknüpfung eines Ausdrucks mit einer Tilde Angabe (~) funktioniert, aber das funktioniert für mich:

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

Für mich druckt das Ausdruck (ρ = 0,84) in die Handlung.Die Konsole gibt das auch zurück, wenn ich einfach 'c.a. 'anrufe. Ich habe versucht, diesen Stich herauszuziehen und' substring' darauf zu verwenden, aber niter 'cat' oder' as.character' geben diese Darstellung. – rumtscho

+0

Ja, kopiert von hier eingefügt. Wenn ich 'as.character' verwende, wird nichts auf der Handlung gedruckt. – rumtscho

+0

2.2.0 hier war es, was kam durch packages.install (auf R 3.2.2) – rumtscho