2017-07-07 2 views
0

Ich zeichne einige Ergebnisse mit ggplot2. Die Daten werden in Datenrahmen wie folgt strukturiert organisiert:Wie verwende ich einen Ausdruck in einer Maßstabsfunktion in ggplot2?

category comparison value 
1 A   deltaXT/FT 6807 
2 B   deltaXT/FT 11894 
3 C   deltaXT/FT 1215 
4 D   deltaXT/FT 42862 
5 E   deltaXT/FT 34313 
... 

Es gibt 4 Vergleiche insgesamt, die jeweils in den Kategorien unterteilt A-E, in der gleichen Datenrahmen (die Handlung sieht aus wie this). Mein Ziel ist es, "DeltaXT/FT" mit "ΔXT/FT" zu ersetzen, mit dem griechischen Symbol für Delta.

In der Handlung Ich bin mit der „Vergleich“ -Spalte die Farbe der Balken zu definieren, wie folgt aus:

ggplot(data=vars, aes(x=category, y=value, fill=comparison)) + 
... 
scale_fill_manual(values=c("deltaXT/FT"="#6FA9BC"), ...) 

Grundsätzlich alles funktioniert gut, während ich „deltaXT/FT“ in scale_fill_manual verwenden und im ursprünglichen Datenrahmen. Wenn ich versuche, expression(Delta * "XT/FT")="#6FA9BC", ...) verwende ich diese Fehlermeldung erhalten:

Error: unexpected '=' in: 
... 
scale_fill_manual(values=c(expression(Delta * "XT/FT"))=" 

Das Problem scheint mit scale_fill_manual() zu sein: die expression() nicht als Schlüssel dort verwendet werden könnte. Ich lese andere Threads hier in StackOverflow, wo Leute vorgeschlagen wurden, bquote(expression()=value) zu verwenden, aber der Fehler änderte sich nicht, wenn man es benutzte.

Irgendwelche Vorschläge, wie man hinter dieses Problem kommt und einen schönen ΔXT/FT-Namen in der Legende hat?

EDIT: Kopieren-Einfügen der Δ-Zeichen in das Rscript, wo erforderlich funktioniert, aber ich bin mehr daran interessiert, wenn die expression() kann als Schlüssel in einer solchen Situation im Allgemeinen verwendet werden.

Antwort

0

Sie können nur die Beschriftung ändern, die jedem comparison zugeordnet ist, nicht den Wert, der es abbildet.

... + 
scale_color_manual(values = c("deltaXT/FT" = "#6FA9BC"), 
        labels = c("deltaXT/FT" = expression(Delta * "XT/FT"))) 

Oder in einem kompletten Grundstück:

library(ggplot2) 
ggplot(data=df, aes(x=category, y=value, color=comparison)) + 
    geom_point(size = 5) + 
    scale_color_manual(values=c("deltaXT/FT"="#6FA9BC"), 
        labels = expression(Delta * "XT/FT")) 

Daten:

df <- read.table(text = ' category comparison value 
1 A   deltaXT/FT 6807 
       2 B   deltaXT/FT 11894 
       3 C   deltaXT/FT 1215 
       4 D   deltaXT/FT 42862 
       5 E   deltaXT/FT 34313', header = TRUE) 
Verwandte Themen