Wie verwende ich griechische Symbole in ggplot2?

101

Meine Kategorien müssen mit griechischen Buchstaben benannt werden. Ich benutze ggplot2, und es funktioniert wunderbar mit den Daten. Leider kann ich nicht herausfinden, wie diese griechischen Symbole auf der x-Achse (an den Häkchen) platziert und auch in der Legende angezeigt werden. Gibt es eine Möglichkeit, dies zu tun?

UPDATE: Ich habe mir den Link angesehen , es ist jedoch keine gute Methode beschrieben, um das zu erreichen, was ich tun möchte.

Sam
quelle
4
Siehe die Diskussion der expressionFunktion hier: stackoverflow.com/questions/1395105/getting-latex-into-r-plots
DrewConway
Gibt es einen Hinweis darauf, wie man das viewportsvon einem ggplot2 erhält ? Wenn das möglich ist, glaube ich, dass das Ändern der x-tic-Markierungen einfach sein wird.
Sam
Sie können das latex2expPaket verwenden: cran.r-project.org/web/packages/latex2exp/vignettes/…
Enrique Pérez Herrero

Antworten:

151

Hier ist ein Link zu einem ausgezeichneten Wiki, das erklärt, wie man griechische Symbole in ggplot2 einfügt. Zusammenfassend können Sie Folgendes tun, um griechische Symbole zu erhalten

  1. Textbeschriftungen: Verwenden Sie parse = Tinnerhalb geom_textoder annotate.
  2. Achsenbeschriftungen: Verwenden Sie expression(alpha)diese Option, um griechisches Alpha zu erhalten.
  3. Facet Labels: Verwenden labeller = label_parsedinnen facet.
  4. Legend Labels: Verwenden Sie bquote(alpha == .(value))in der Legende Label.

Sie können die detaillierte Verwendung dieser Optionen im Link sehen

BEARBEITEN. Das Ziel der Verwendung griechischer Symbole entlang der Häkchen kann wie folgt erreicht werden

require(ggplot2);
data(tips);
p0 = qplot(sex, data = tips, geom = 'bar');
p1 = p0 + scale_x_discrete(labels = c('Female' = expression(alpha),
                                      'Male'   = expression(beta)));
print(p1);

Eine vollständige Dokumentation zu den verschiedenen Symbolen, die dabei verfügbar sind, und deren Verwendung finden Sie unter ?plotmath.

Ramnath
quelle
Ich möchte, dass diese griechischen Symbole die Tics markieren. Ich bin mir nicht sicher, ob ich dieser Antwort folge. Ich werde es versuchen und zurückschreiben. Danke für die Richtung.
Sam
Dies funktioniert zumindest für meinen Zweck nicht. Vielen Dank für den Hinweis.
Sam
@ Sam, schau dir den Beispielcode in meiner Bearbeitung an. Es gibt Ihnen griechische Symbole entlang Ihrer x-Achsen-Häkchen. Ist es das, wonach du gesucht hast?
Ramnath
8
Ich möchte nach einem griechischen Buchstaben ein Sternchen ('*') einfügen. Weiß jemand, wie man das macht?
Polarisieren Sie den
1
Ich habe vor kurzem erfahren , dass eine andere Option zu verwenden ist substitute, funktioniert das auch an Orten , wo expressionnicht funktioniert, und ermöglicht auch andere Formatierungen wie italics, boldusw.
Sam
40

Einfachste Lösung: Verwenden Sie Unicode-Zeichen

Keine expressionoder andere Pakete erforderlich.
Ich bin mir nicht sicher, ob dies eine neuere Funktion für ggplot ist, aber sie funktioniert. Es macht es auch einfach, griechischen und normalen Text zu mischen (wie das Hinzufügen von '*' zu den Häkchen)

Verwenden Sie einfach Unicode-Zeichen in der Textzeichenfolge. scheint für alle Optionen, die mir einfallen, gut zu funktionieren. Bearbeiten: Bisher funktionierte es nicht in Facettenbeschriftungen. Dies wurde anscheinend irgendwann behoben.

library(ggplot2)
ggplot(mtcars, 
       aes(mpg, disp, color=factor(gear))) + 
  geom_point() + 
  labs(title="Title (\u03b1 \u03a9)", # works fine
       x= "\u03b1 \u03a9 x-axis title",    # works fine
       y= "\u03b1 \u03a9 y-axis title",    # works fine
       color="\u03b1 \u03a9 Groups:") +  # works fine
  scale_x_continuous(breaks = seq(10, 35, 5), 
                     labels = paste0(seq(10, 35, 5), "\u03a9*")) + # works fine; to label the ticks
  ggrepel::geom_text_repel(aes(label = paste(rownames(mtcars), "\u03a9*")), size =3) + # works fine 
  facet_grid(~paste0(gear, " Gears \u03a9"))

Erstellt am 28.08.2019 durch das reprex-Paket (v0.3.0)

Matt L.
quelle
4
Gute Antwort. Weitere Informationen
PatrickT
sehr flexibel!!
Joaoal
2
Dies ist der beste Weg, da Sie sich nicht mit den von expressionoder gebildeten Objekttypen herumschlagen. Am Ende erhalten Sie ein Zeichenobjekt bquote, das Sie auf jede andere Weise verwenden können, wenn Sie Zeichenobjekte verwenden.
GMSL
1
Dies ist nicht nur die einfachste, sondern auch die beste Methode, da sie in den meisten Fällen funktioniert und nicht auf anderen Funktionen beruht.
Squeezie
Dies erzeugt eine Menge Warnungen, ungefähr hundert Zeilen von:Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : “conversion failure on '>3σ' in 'mbcsToSbcs': dot substituted for <cf>
Patafikss
36

Verwenden Sie expression(delta)wo 'Delta' für Kleinbuchstabenδ und 'Delta', um Kapital zu erhaltenΔ .

Hier ist die vollständige Liste der griechischen Schriftzeichen:

Α α alpha
Β β beta
Γ γ gamma
Δ δ delta
Ε ε epsilon
Ζ ζ zeta
Η η eta
Θ θ theta
Ι ι iota
Κ κ kappa
Λ λ lambda
Μ μ mu
Ν ν nu
Ξ ξ xi
Ο ο omicron
Π π pi
Ρ ρ rho
Σ σ sigma
Τ τ tau
Υ upsilon
Φ φ phi
Χ chi
Ψ psi
Ω ω omega

BEARBEITEN: Aus Kommentaren kopiert, wenn in Verbindung mit anderen Wörtern verwendet werden, verwenden Sie wie:expression(Delta*"price")

Matas Vaitkevicius
quelle
1
Wie kann ich ein Label wie bekommen Δprice? expression(Deltaprice)funktioniert nicht, auch nichtexpression(Delta price)
jf328
2
Vielen Dank. Aber wie ist das genau? xlab(expression(Delta)price)gibt einen Fehler
jf328
3
Ausdruck (Delta * Preis)
kennyB
Gibt es eine Möglichkeit, ein Upsilon in griechischer Form (im Gegensatz zur lateinischen Form) zu erhalten? Siehe en.wikipedia.org/wiki/Upsilon Korrespondenz mit lateinischem Y (Ich möchte so etwas wie das dritte Zeichen in en.wikipedia.org/wiki/Upsilon#/media/… )
Adrian
6
Ausdruck (Delta * "Preis") funktioniert. Ich mag die Syntax nicht.
Daknowles
16

Sie benötigen das latex2expPaket nicht, um das zu tun, was Sie tun wollten. Der folgende Code würde den Trick machen.

ggplot(smr, aes(Fuel.Rate, Eng.Speed.Ave., color=Eng.Speed.Max.)) + 
  geom_point() + 
  labs(title=expression("Fuel Efficiency"~(alpha*Omega)), 
color=expression(alpha*Omega), x=expression(Delta~price))

Geben Sie hier die Bildbeschreibung ein

In einigen Kommentaren (zum jetzigen Zeitpunkt unbeantwortet) wurde auch gefragt, ob nach einem griechischen Buchstaben ein Sternchen (*) eingefügt werden soll. expression(alpha~"*")funktioniert, also schlage ich vor, es zu versuchen.

Weitere Kommentare wurden gefragt, Δ Priceund ich finde den einfachsten Weg, dies zu erreichen expression(Delta~price)). Wenn Sie vor dem griechischen Buchstaben etwas hinzufügen müssen, können Sie auch Folgendes tun expression(Indicative~Delta~price):

Geben Sie hier die Bildbeschreibung ein

einziges Phantom
quelle