将条形图放置在条形图中的特定x轴值处

时间:2019-01-19 16:57:10

标签: r bar-chart

我想将二维数据表示为条形图,放置在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)

我宁愿使用基数R并避免ggplot。

1 个答案:

答案 0 :(得分:0)

虽然我同意@ 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)

Barplot-like chart