【问题标题】:Place bars at specific x-axis values in a barplot将条形图放置在条形图中的特定 x 轴值处
【发布时间】:2019-01-19 16:57:09
【问题描述】:

我想将二维数据表示为条形,放置在 x 轴值上,但barplot() 不允许控制 x 轴放置,plot() 不绘制条形:

x <- c(1, 2, 3, 5)
y <- 1:4
plot(x, y, type = "h")
barplot(y)

Click for an image illustrating the plot() and barplot() examples.

我知道我可以绘制直方图 –

hist(rep(x, y), breaks = seq(min(x) - 0.5, max(x) + 0.5, 1))

Click for an image illustrating the hist() example.

– 但是原始(非频率)数据的重新创建和中断的计算并不总是像本示例中那样简单,因此:

  • 有没有办法强制plot()画条?
  • 或者有没有办法强制barplot() 将条形图放置在 x 轴上的特定值处?

基本上,我想要的是这样的:

barplot(y, at = x)

我更喜欢使用 base R 并避免使用 ggplot。

【问题讨论】:

  • 条形图在 x 轴上使用分类值。要使用 barplot 绘制特定值,那么所有类别都需要一个值,即使为零。就像在这个barplot(c(1, 2,3, 0, 4), names.arg=1:5)
  • @Dave2e 这是个好主意,但只有在条形间距均匀的情况下才有效。如果x &lt;- c(1.45, 3.465, 7.0000004, 9.89)怎么办?
  • 条形图适用于离散类型的数据,因此如果数据间隔不均匀,则条形图不是正确的绘图类型。您的问题没有解释什么是数据或您试图展示什么,因此不可能提供有意义的建议。

标签: r bar-chart


【解决方案1】:

虽然我同意@Dave2e 的观点,条形图可能不是表示数据的最佳方式,但您可以通过从空白图开始并绘制相关矩形来获得类似于您所描述的内容。我正在使用您的 y 值 (1:4) 和您在评论中提到的 x 值。我不确定您在 x 轴上想要什么,但我会为您给出的 x 值显示标签。为了看起来像条形图,我抑制了 x 轴上的刻度线。

plot(NULL, xlim=c(0,11), ylim=c(0,4.5), bty="n",
    xaxt="n", xaxs="i", yaxs="i", xlab="", ylab="")
rect(x-0.5, 0, x+0.5, y, col="gray")
axis(side=1, at=x, col.ticks=NA)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2022-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多