Lorsque je fais un diagramme en boîte avec la fonction R boxplot , cette fonction imprime automatiquement l'axe des y.
library(datasets)
boxplot(cars[c('speed', 'dist')],
col = "lightgray")
Dans le ? boxplot J'ai trouvé le paramètre ylim qui modifie les limites de l'axe y, mais ne modifie pas l'échelle. J'ai donc essayé d'utiliser la fonction axis pour diviser l'échelle de 0 à 120 tous les 10:
axis (4, at = seq (0, 120, 10)) . Mais je n'obtiens pas un résultat satisfaisant.
Je ne vois pas où je fais des erreurs. Quelqu'un pourrait-il répondre à cette question?
Merci d'avance.
3 Réponses :
Vous pouvez utiliser ggpubr à la place. Il vous permet de le traiter comme un objet gg .
p + ggpubr::yscale("log2", .format = TRUE)
Si vous le souhaitez à l'échelle du journal:
librabry(ggpubr)
library(reshape2)
df <- melt(cars)
p <- ggpubr::ggboxplot(data = df, x = "variable", y = "value", width = 0.8) +
ggtitle("Plot of car") +
xlab("my-xalabel") + ylab("my-ylabel")
>p
Salut @MAPK, votre réponse n'a pas fonctionné pour moi. Il ne s'agit pas de la fonction boxplot. Et n'a pas renvoyé le diagramme boxplot avec l'axe des y segmenté tous les 10. Merci pour votre soutien.
library(datasets)
boxplot(cars[c('speed', 'dist')], col = "lightgray", ylim = range(0:120), yaxs = "i")
axis(4, at=seq(0, 120, 10))
The y-axis is on the right-hand side as you wanted I believe.
Qu'est-ce que cela fait?
mise en œuvre correcte pour mettre tous les 10 incréments sur les axes verticaux.
Salut @Vitali Avagyan, ta réponse n'a pas fonctionné pour moi. Comment pouvez-vous voir tracer le diagramme, il n'a pas renvoyé la boîte à moustaches avec l'axe des y segmenté tous les 10. Merci pour votre soutien.
C'est étrange, j'ai pu l'obtenir. J'essaierai d'ajouter le résultat.
@cladius, j'ai édité le message et mis le résultat qui a été produit par une exécution du même code exact qui est écrit dans ma réponse. Pouvez-vous au moins confirmer que c'est ce que vous recherchez? Merci.
Maintenant, cela a bien fonctionné. =) Merci encore pour le soutien.
Je réponds parce que le PO a déclaré dans un commentaire que mon commentaire faisait le travail. Je vais également expliquer le code ici.
Il y a deux astuces à considérer:
y en définissant l'argument yaxt = "n" . las = 2 . Le code final est donc le suivant.
library(datasets)
boxplot(cars[c('speed', 'dist')],
col = "lightgray", yaxt = "n")
axis(2, at = seq(0, 120, 10), las = 2)
J'ai essayé las = 1 et cela a fonctionné aussi. Mais las = 3 ne fonctionne pas. J'essaie de comprendre comment le paramètre las est lié à la segmentation de l'axe y. On dirait informagique.
@claudius La référence est la documentation officielle a>: las = 1 signifie "toujours horizontal" ; las = 2 signifie "toujours perpendiculaire à l'axe et las = 3 est " toujours vertical ". Et c'est travailler avec moi.
Peut-être que
boxplot (..., yaxt = "n")suivi deaxis (2, at = seq (0, 120, 10), las = 2).Ceci est une question similaire qui soutient le commentaire de @RuiBarradas.
Salut @RuiBarradas ça a bien fonctionné! Merci pour votre soutien. Pourriez-vous faire une réponse, s'il vous plaît? Je n'ai pas compris pourquoi
las = 2et nonlas = 1.Salut @maydin. Je pense que cette question est un peu différente. Parce que je ne pouvais créer un axe y segmenté qu'en utilisant l'argument
lasdans la fonctionaxis.Terminé, voir la réponse ci-dessous.