web-dev-qa-db-fra.com

Comment utiliser les symboles grecs dans ggplot2?

Mes catégories doivent être nommées avec des lettres grecques. J'utilise ggplot2, et cela fonctionne à merveille avec les données. Malheureusement, je n'arrive pas à comprendre comment mettre ces symboles grecs sur l'axe des x (au niveau des graduations) et également les faire apparaître dans la légende. Y a-t-il un moyen de le faire?

MISE À JOUR: J'ai jeté un coup d'œil au lien , cependant, il n'y a pas de bonne méthode décrite pour accomplir ce que je veux faire.

90
Sam

Voici un lien vers un excellent wiki qui explique comment mettre des symboles grecs dans ggplot2. En résumé, voici ce que vous faites pour obtenir les symboles grecs

  1. Étiquettes de texte: Utilisez parse = T Dans geom_text Ou annotate.
  2. Étiquettes d'axe: Utilisez expression(alpha) pour obtenir l'alpha grec.
  3. Étiquettes de facettes: Utilisez labeller = label_parsed Dans facet.
  4. Libellés de la légende: Utilisez bquote(alpha == .(value)) dans le libellé de la légende.

Vous pouvez voir l'utilisation détaillée de ces options dans le lien

MODIFIER. L’objectif consistant à utiliser des symboles grecs le long des graduations peut être atteint comme suit:

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);

Pour une documentation complète sur les différents symboles disponibles et sur leur utilisation, voir ?plotmath.

135
Ramnath

Utilisez expression(delta) où 'delta' pour les lettres minuscules δ Et 'Delta' pour obtenir le capital Δ.

Voici la liste complète des caractères grecs:

Α alpha
Β beta
Γ γ gamma
Δ δ delta
Ε epsilon
Ζ zeta
Η eta
Θ thêta
Ι iota
Κ kappa
Λ lambda
Μ μ mu
Ν nu
Ξ xi
Ο omicron
Π pi
Ρ ρ rho
Σ sigma
Τ tau
Upsupon
Phi
Χ chi
Psi
Ω ω oméga

EDIT: Copié à partir de commentaires, lorsqu’il est utilisé en conjonction avec d’autres mots, utilisez comme: expression(Delta*"price")

31
Matas Vaitkevicius

Solution la plus simple: utilisez des caractères Unicode

Pas de expression ou d'autres paquets nécessaires.
Je ne sais pas s'il s'agit d'une nouvelle fonctionnalité de ggplot, mais cela fonctionne. Il est également facile de mélanger du texte grec et du texte normal (comme en ajoutant '*' aux ticks)

Utilisez simplement des caractères unicode dans la chaîne de texte. semble bien fonctionner pour toutes les options auxquelles je peux penser. Éditer: auparavant, cela ne fonctionnait pas dans les étiquettes de facettes. Cela a apparemment été corrigé à un moment donné.

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"))

Créé le 2019-08-28 par le package reprex (v0.3.0)

23
Matt L.

Vous n'avez pas besoin du paquet latex2exp Pour faire ce que vous vouliez faire. Le code suivant ferait l'affaire.

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))

enter image description here

De plus, certains commentaires (sans réponse à ce jour) concernaient l'ajout d'un astérisque (*) après une lettre grecque. expression(alpha~"*") fonctionne, donc je suggère d'essayer.

Plus de commentaires demandés sur l'obtention de Δ Price Et je trouve que le moyen le plus simple d'y parvenir est expression(Delta~price)). Si vous devez ajouter quelque chose avant la lettre grecque, vous pouvez également procéder de la manière suivante: expression(Indicative~Delta~price), ce qui vous permet d'obtenir:

enter image description here

11
onlyphantom