R barplot échelle de l'axe Y trop courte
j'essaie de générer un barplot, mais l'échelle de l'axe y est trop courte. Voici mon code:
barplot(as.matrix(dat), log="y", ylim=c(10000,100000000), beside=TRUE,
ylab = "Number of reads", col = c("gray","black","white"))
il laisse de la place pour l'axe (selon ylim), mais ne remplit pas l'axe réel. J'ai été par le biais de ?barplot
et essayé quelques choses (de googler autour de je pensais xpd = F, yaxs = c(10000,10000000,5)
devrait fonctionner, mais il n'a pas).
je sais que c'est une chose mineure, mais c'est exactement le genre de problème sur lequel je suis coincé depuis des lustres, au lieu de travailler, donc toute aide serait grandement appréciée!
Modifier: Bravo pour la saisie gars!
j'ai d'abord tracé sans ylim, mais il finit avec un axe encore plus bizarre (avec le même problème); j'ai en fait choisi mes valeurs ylim pour lui donner un axe plus espacé.
Voici les données:
dat <- read.table(text="D2,D3n,D3m,D4n,D4m
21234722,34262282,31920464,25486357,20712943
35343,64403,22537,39934,46547
126646,312286,101105,81537,76944", header=TRUE, sep=",")
Modifier 2: @DWin avait raison - j'ai mis à jour mon R, et maintenant il se loge très bien-merci tout le monde!
3 réponses
je vois que vous essayez de définir ylim
mauvais vous donnez de mauvaises valeurs. Cela va changer l'échelle de la parcelle(comme un zoom) voir Par exemple ceci :
par(mfrow=c(2,1))
tN <- table(Ni <- stats::rpois(100, lambda = 5))
r <- barplot(tN, col = rainbow(20),ylim=c(0,50),main='long y-axis')
r <- barplot(tN, col = rainbow(20),main='short y axis')
une autre option consiste à tracer sans axes , et à le régler manuellement en utilisant axis
et usr
:
require(grDevices) # for colours
par(mfrow=c(1,1))
r <- barplot(tN, col = rainbow(20),main='short y axis',ann=FALSE,axes=FALSE)
usr <- par("usr")
par(usr=c(usr[1:2], 0, 20))
axis(2,at=seq(0,20,5))
la solution la plus simple semble spécifier le ylim
plage. Voici quelques codes pour le faire automatiquement (par défaut à gauche, ajusté à droite):
layout(t(c(1,2)))
# default y-axis
barplot(dat, beside=TRUE)
# automatically adjusted y-axis
barplot(dat, beside=TRUE, ylim=range(pretty(c(0, dat))))
le truc est d'utiliser pretty()
qui renvoie une liste d'intervalle pauses couvrant toutes les valeurs des données fournies. Il garantit que la valeur maximale retournée est 1) un nombre rond 2) plus grande que la valeur maximale dans les données.
dans l'exemple 0 a aussi été ajouté pretty(c(0, dat))
ce qui assure que l'axe commence à 0.