2017-01-08 3 views
2

Est-il possible de passer des étiquettes de texte partiellement en italique dans ggplot? J'ai essayé d'utiliser les commandes expression et italic (expression(paste(italic("some text")))), mais celles-ci ne peuvent pas être passées dans une trame de données car le résultat des commandes n'est pas atomique. La définition du paramètre fontface = "italic" ne suffit pas non plus, car cela met en italique l'intégralité de l'étiquette plutôt qu'un simple ensemble de caractères dans l'étiquette. Par exemple, je voudrais que certaines phrases latines nécessairement en italique soient en italique dans une étiquette (comme "in vivo" dans "point in vivo").Comment inclure du texte en italique dans les libellés geom_text_repel ou geom_text pour ggplot?

library(ggplot) 
library(ggrepel) 

df <- data.frame(V1 = c(1,2), V2 = c(2,4), V3 = c("in vivo point","another point")) 

ggplot(data = df, aes(x = V1, y = V2)) + geom_point() + geom_text_repel(aes(label = V3)) 
+2

ajoute 'fontface = "italic"' pas une option: 'ggplot (data = df, aes (x = V1, y = V2)) + geom_point() + geom_text_repel (aes (label = V3), fontface = "italique") '? – Jota

+1

Pour être juste envers l'OP, l'aide sur les fonctions '_repel' n'inclut pas toutes les esthétiques supportées directement dans le texte mais _does_ dit _" Voir la documentation de ces fonctions [geom_text/geom_label] pour plus de détails "_ – hrbrmstr

+0

Désolé, dans une course, j'ai oublié d'inclure que seule une sous-chaîne de l'étiquette doit être en italique; Je vais modifier la question. – Bob

Répondre

3

Vous pouvez utiliser parse = TRUE passer ?plotmath expressions (sous forme de chaînes) à geom_text ou geom_text_repel. Vous devrez réécrire les chaînes comme plotmath, mais si ce n'est pas trop, ce n'est pas trop grave.

Note: La version CRAN de ggrepel a un bug qui casse parse = TRUE, mais il a été fixé sur la version GitHub. ggplot2::geom_text fonctionne très bien.

# devtools::install_github('slowkow/ggrepel') 

df <- data.frame(V1 = c(1,2), V2 = c(2,4), 
       V3 = c("italic('in vivo')~point", "another~point")) 

ggplot(data = df, aes(x = V1, y = V2, label = V3)) + 
    geom_point() + 
    geom_text_repel(parse = TRUE) 

plot with partial italic label