バープロットを生成しようとしていますが、y軸のスケールが短すぎます。私のコードは次のとおりです。
_barplot(as.matrix(dat), log="y", ylim=c(10000,100000000), beside=TRUE,
ylab = "Number of reads", col = c("gray","black","white"))
_
(ylimのように)軸用のスペースを残しますが、実際の軸は埋めません。私は_?barplot
_を試し、いくつかのことを試しました(グーグルでxpd = F, yaxs = c(10000,10000000,5)
が機能するはずだと思っていましたが、機能しませんでした)。
私はそれが些細なことであることを知っていますが、それは実際に働くのではなく、まさに私が長い間立ち往生している種類の問題ですので、どんな助けも大歓迎です!
編集:入力者に乾杯!
最初はylimなしでプロットしましたが、さらに奇妙な軸になります(同じ問題があります)。実際に、より良い間隔の軸を与えるために、ylim値を選択しました。
データは次のとおりです。
_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=",")
_
編集2:@DWinは正しかった-私はRを更新し、今ではうまくプロットされます-みんなありがとう!
ylim
badを設定しようとすると、悪い値を与えます。これにより、プロットのスケールが変更されます(ズームなど)。たとえば、次を参照してください。
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')
別のオプションは、axesなしでプロットし、axis
と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))
最も簡単な解決策は、ylim
範囲を指定することです。これを自動的に行うためのコードを次に示します(左デフォルト、右-調整済み):
_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))))
_
トリックは、pretty()
を使用することです。これは、提供されたデータのすべての値をカバーする間隔ブレークのリストを返します。最大戻り値が1)ラウンド数2)データの最大値より大きいことを保証します。
例では0が追加されましたpretty(c(0, dat))
.