2
votes

en utilisant `plotmath` pour afficher la combinaison de l'indice et de` [] `

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:

entrez la description de l'image ici

Il y a donc deux choses que je ne peux pas semblent comprendre comment faire en utilisant plotmath:

  1. 95% devrait plutôt être 95%

  2. 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.


0 commentaires

4 Réponses :


3
votes

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

 entrez la description de l'image ici


5 commentaires

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.



3
votes

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,']')
  )

screenshot


2 commentaires

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)



2
votes

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 = "*&mu;* = 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)


1 commentaires

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: