R barplot Y轴刻度太短

时间:2013-04-20 15:14:03

标签: r plot bar-chart axis

我正在尝试生成一个条形图,但是y轴刻度太短。这是我的代码:

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

short y axis

它离开轴的空间(根据ylim),但不填充实际轴。我经历了?barplot并尝试了一些事情(从谷歌上搜索我认为xpd = F, yaxs = c(10000,10000000,5)应该有用,但事实并非如此)。

我知道这是一个小问题,但这正是我长期困扰的问题,而不是实际工作,所以任何帮助都会非常感激!

编辑: 为输入人员干杯!

我最初在没有ylim的情况下进行了绘图,但最终却出现了一个更奇怪的轴(同样的问题);我实际上选择了我的ylim值来给它一个更好的间隔轴。 original no 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,现在它很好 - 谢谢大家!

3 个答案:

答案 0 :(得分:27)

我看到你试图设置ylim坏,你给了坏的价值。这将改变绘图的比例(如缩放)例如见:

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

enter image description here

另一种选择是在没有轴的情况下绘图,并使用axisusr手动设置:

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

enter image description here

答案 1 :(得分: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))))

enter image description here

诀窍是使用pretty()返回包含所提供数据的所有值的间隔中断列表。它保证最大返回值为1)数字2)大于数据中的最大值。

在示例0中还添加了pretty(c(0, dat)),以确保轴从0开始。

答案 2 :(得分:-3)

barplot(data)

enter image description here

barplot(data, yaxp=c(0, max(data), 5))

enter image description here

yaxp = c(minY轴,maxY轴,间隔)