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 = 2
et 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
las
dans la fonctionaxis
.Terminé, voir la réponse ci-dessous.