【问题标题】:R barplot Y-axis scale too shortR barplot Y轴刻度太短
【发布时间】:2013-04-13 20:48:33
【问题描述】:

我正在尝试生成条形图,但 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,现在画得很好 - 谢谢大家!

【问题讨论】:

  • 可能会更好地绘制log(y)
  • 嗯。我得到更长的 log10 y 轴。上升到 1e+08。在 MacOS、Snow Leopard 上运行 R 3.0.0。所以也许你需要告诉我们你的设置是什么,如果它是旧的,那么请更新。我也认为你的情节很误导人。
  • 运行 R 2.13.1,猜猜这就是问题所在!但为什么情节会误导呢?
  • 已更新,现在一切正常 - 谢谢!虽然作为一个不经常策划这种东西的人,你为什么认为它具有误导性?

标签: r plot bar-chart axis


【解决方案1】:

我看到您尝试设置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')

另一种选择是不使用坐标轴进行绘图并使用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))

【讨论】:

    【解决方案2】:

    最简单的解决方案似乎是指定ylim 范围。这是一些自动执行此操作的代码(左侧默认,右侧调整):

    # 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)),以确保轴从 0 开始。

    【讨论】:

    • 这正是我想要的! +1 通用解决方案!
    【解决方案3】:
    barplot(data)
    

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

    yaxp=c(minY-axis, maxY-axis, Interval)

    【讨论】:

    • 我想知道为什么将 Y 轴缩放到最大值不是默认设置:如果您尝试将条形的高度放在每个条形上方,则最大高度处的条形文本将被剪裁。考虑这个变体: p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多