J'essaie de générer un diagramme à barres, 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 la place à l'axe (selon ylim), mais ne remplit pas l'axe réel. J'ai parcouru ?barplot
Et j'ai essayé quelques choses (après avoir fait des recherches sur Google, j'ai pensé que xpd = F, yaxs = c(10000,10000000,5)
devrait fonctionner, mais cela n'a pas fonctionné).
Je sais que c'est une chose mineure, mais c'est exactement le genre de problème sur lequel je reste coincé depuis des lustres, au lieu de travailler réellement, donc toute aide serait très appréciée!
Edit: Bravo pour les gars d'entrée!
J'ai d'abord tracé sans ylim, mais ça 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=",")
Edit 2: @DWin avait raison - j'ai mis à jour mon R, et maintenant ça va bien - merci à tous!
Je vois que vous essayez de définir ylim
mauvais, vous donnez de mauvaises valeurs. Cela changera l'échelle de l'intrigue (comme un zoom) Par exemple, voyez 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 définir manuellement à l'aide de 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 être de spécifier la plage ylim
. Voici du code 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))))
L'astuce consiste à utiliser pretty()
qui retourne une liste d'interruptions couvrant toutes les valeurs des données fournies. Il garantit que la valeur maximale renvoyée est 1) un nombre rond 2) supérieur à la valeur maximale dans les données.
Dans l'exemple 0 a également été ajouté pretty(c(0, dat))
qui s'assure que l'axe commence à 0.