Je souhaite créer un graphique dans lequel je souhaite afficher une valeur moyenne et des intervalles de confiance pour cette valeur moyenne. Pour ce faire, j'utilise plotmath
. Voici quelque chose que j'ai fait qui fonctionne-
library(ggplot2) ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() + labs( title = "Mean weight:", subtitle = parse(text = paste( "list(~italic(mu)==", 3.22, ",", "CI[95~'%'] ", "(", 2.87, ",", 3.57, "))", sep = "" )) )
Créé le 25/08/2019 par le package reprex (v0 .3.0)
Mais ce n'est pas ce que je veux réellement. Le format dans lequel je souhaite plutôt afficher ces résultats est le suivant:
Il y a donc deux choses que je ne peux pas semblent comprendre comment faire en utilisant plotmath
:
95%
devrait plutôt être 95%
Utilisez [
au lieu de (
Comment puis-je faire cela?
PS Il est important, pour des raisons trop compliquées à expliquer ici, pour moi d'avoir liste code> dans la fonction
coller
car je souhaite enregistrer ces expressions en tant que colonne de type caractère
dans un dataframe. C'est pourquoi je n'ai pas accepté les deux solutions proposées ci-dessous.
4 Réponses :
Une option serait bquote
library(ggplot2) ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() + labs(title = "Mean weight:", subtitle = bquote(italic(mu)~"= 3.22,"~CI[95*'%']~"["*"2.87, 3.57"*"]"))
Merci; il y a cependant deux parties à la question. Votre réponse ne résout que le premier problème.
@IndrajeetPatil Merci, j'ai mis à jour avec bquote
car cela semble plus direct
Cela vous dérange-t-il également de fournir une version de la solution qui n'utilise pas bquote
et qui est plus conforme au code existant dans la question?
@IndrajeetPatil J'aurais fait ça mais il y a une autre réponse qui fait ça
Mais ce n'est pas le cas. Il n'utilise ni list
ni paste
, ce qui est important pour moi car je souhaite enregistrer ces expressions sous forme de colonne dans un dataframe.
Utilisez la formule indiquée:
ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() + labs( title = "Mean weight:", subtitle = ~italic(mu) == 3.22*', '*"CI"[95*'%']*group('[',2.87*','*3.57,']') )
Merci. Je préférerais cependant une solution qui ne change pas le code spécifié dans la question. Je souhaite utiliser list
+ coller
car j'enregistre ces expressions sous forme de colonnes de type caractère
.
Définissez simplement la même expression comme une chaîne de caractères, auquel cas vous pouvez la coller ensemble à partir d'éléments comme vous le souhaitez. sous-titre <- "italic (mu) == 3.22 * ',' * 'CI' [95 * '%'] * groupe ('[', 2.87 * ',' * 3.57, ']')" < / code> Ensuite, utilisez ceci dans ggplot:
subtitle = parse (text = subtitle)
Je suppose que ce qui vous importe réellement, c'est que la sortie semble correcte, pas que le tracé est utilisé. Vous pouvez utiliser le package ggtext que je développe actuellement, qui vous donne la possibilité d'utiliser un simple markdown / HTML à l'intérieur de ggplot2. Je trouve généralement qu'il est beaucoup plus facile de créer des expressions mathématiques de base de cette façon que de se débattre avec plotmath. Et vous n'avez pas du tout à travailler avec des expressions R, l'entrée est toujours une simple chaîne de caractères.
# this requires the current development versions of ggplot2 and ggtext # remotes::install_github("tidyverse/ggplot2") # remotes::install_github("clauswilke/ggtext") library(ggplot2) library(ggtext) ggplot(mtcars, aes(as.factor(cyl), wt)) + geom_boxplot() + labs( title = "Mean weight:", subtitle = "*μ* = 3.22, CI<sub>95%</sub>[2.87, 3.57]" ) + theme(plot.subtitle = element_markdown())
Créé le 02/12/2019 par le reprex paquet (v0.3.0)
Merci, Claus! Je suis ravi de voir que l'affichage des expressions dans ggplot
deviendra plus facile à l'avenir en utilisant ggtext
. Mais, actuellement, cette solution ne fonctionne pas pour moi. Je voudrais que la solution s'en tient au format (comme liste
dans la colonne de type caractère
qui peut être analysée) que j'ai montré car c'est celui que je dois implémenter dans un fonction de package:
votes