ändern - r plot punkte beschriften




R Barplot Y-Achse zu kurz skalieren (2)

Ich versuche, einen Barplot zu erzeugen, aber die Y-Achsenskala ist zu kurz. Hier ist mein Code:

barplot(as.matrix(dat), log="y", ylim=c(10000,100000000), beside=TRUE,
        ylab = "Number of reads", col = c("gray","black","white"))

Er verlässt den Raum für die Achse (gemäß Ylim), füllt aber nicht die eigentliche Achse. Ich habe ?barplot und ein paar Dinge ausprobiert (aus dem googeln dachte ich xpd = F, yaxs = c(10000,10000000,5) sollte funktionieren, hat es aber nicht).

Ich weiß, es ist eine Nebensache, aber es ist genau die Art von Problem, auf die ich seit Ewigkeiten festhalte, anstatt wirklich zu arbeiten, also würde jede Hilfe sehr geschätzt werden!

Edit: Cheers für die Eingabe Jungs!

Ich habe zunächst ohne Ylim geplottet, aber es endet mit einer noch bizarreren Achse (mit dem gleichen Problem); Ich habe meine Ylim-Werte ausgewählt, um eine schönere Achse zu erhalten.

Hier sind die Daten:

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 hatte es richtig - ich habe mein R aktualisiert, und jetzt geht es gut - vielen Dank!


Die einfachste Lösung scheint die Angabe des ylim Bereichs zu sein. Hier ist ein Code, um dies automatisch zu tun (links Standard, rechts - angepasst):

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))))

Der Trick besteht darin, pretty() das eine Liste von Intervallpausen zurückgibt, die alle Werte der bereitgestellten Daten abdecken. Es garantiert, dass der maximal zurückgegebene Wert 1) eine runde Zahl 2) größer als der maximale Wert in den Daten ist.

In dem Beispiel wurde 0 ebenfalls hinzugefügt pretty(c(0, dat)) , was sicherstellt, dass die Achse bei 0 beginnt.


Ich sehe, du versuchst, ylim schlecht zu stellen, du gibst schlechte Werte. Dies ändert den Maßstab des Diagramms (wie ein Zoom). Beispiel:

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

Eine andere Option ist das Plotten ohne Achsen und das manuelle Setzen mit axis und 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))





axis