【问题标题】:multiple barplots in same graph maintain the same axes and same bar width同一图中的多个条形图保持相同的轴和相同的条宽
【发布时间】:2013-09-22 06:49:18
【问题描述】:

非常愚蠢的问题,但我在网上找不到答案:

需要像这样一起绘制多个条形图:

 i=1:4
 main = paste ("Location ", i)

 windows()
 par(mfrow=c(2,2))
 a<-table(c(rep(10, 6), rep(4, 32)))
 b<-table(c(rep(9, 6), rep(10, 32), rep(11,4)))
 c<-table(c(rep(10, 6)))
 d<-table(c(rep(10, 3), rep(9, 3), rep(8, 5)))

 barplot(a,  main=main[1], xlab='RSSI')
 barplot(b,  main=main[2], xlab='RSSI')
 barplot(c,  main=main[3], xlab='RSSI')#, width=0.5
 barplot(d,  main=main[4], xlab='RSSI')

1) 是否可以保持坐标轴比例不变,以便在每个图形上都相同?

2) 是否可以在图表中保持条形宽度不变?我尝试了宽度,但它似乎不起作用,我希望它在图形之间保持恒定和固定。

谢谢

编辑:for 2) 我知道您可以添加零,以便所有图形都包含相同数量的类,但是由于我在 for 循环中进行绘图,我已删除该循环以使示例更简单,我宁愿如果可能的话,使用另一种方法来做到这一点。 再次感谢

【问题讨论】:

  • 一个小旁注:也许我误解了你,但如果每个位置都有相同的课程,比较不同的位置会不会更容易。抱歉,如果我误解了您的目标。
  • 我不确定我是否完全理解你,你是在问我为什么不“反转 x 和 y”?如果是这样,我对离散变量的局部行为感兴趣,检查 value = 44 与 value = 45 相比在空间上的行为方式并不是一个有趣的现象。我明白你的意思了吗?
  • 对不起,如果我不清楚。在您写的问题中,您知道如何使“所有图形都涉及相同数量的类”,但是您在示例中删除了计数为零的类。我只是认为,如果每个位置都有相同的类集,那么在不同位置之间比较不同级别的 RSSI 的计数可能会更容易,即也包括计数为零的 RSSI 类。但同样,我可能误解了你的总体目标。干杯。
  • 我的意思是我可能会添加零以获得更好的图形效果,我的数据集中没有零,只是类不存在,感谢您的帮助,非常感谢并为我感到抱歉解释很差。干杯!

标签: r axes par bar-chart


【解决方案1】:

可能只是为了您的示例,您将每个图的数据保存在单独的向量中。无论如何,如果位置的数量要多得多,您的工作空间很快就会被小向量弄得一团糟,您将不得不多次致电tablebarplot

无论您是使用base R 函数还是ggplot 绘图,处理存储在数据框中的数据都会容易得多。此外,如果在每个地块中使用每个位置的相同类别集,即还包括计数为零的 RSSI 类别,则在不同位置之间比较不同级别 RSSI 的计数可能会更容易。您还可以跨位置使用相同的 y 轴比例。这是ggplot的一个小例子

library(ggplot2)

# create a data frame with the data in your vectors
# 'x' is the value, and 'loc' the location of each registration
df <- data.frame(x = c(rep(10, 6), rep(4, 32),
                       rep(9, 6), rep(10, 32), rep(11, 4),
                       rep(10, 6),
                       rep(10, 3), rep(9, 3), rep(8, 5)),
                 loc = c(rep("a", 6+32), rep("b", 6+32+4), rep("c", 6), rep("d", 3+3+5)))

# plot using geom_bar, which default counts the cases for each level of  - no need for 'table'
ggplot(data = df, aes(x = factor(x))) +
  geom_bar() +
  facet_wrap(~ loc)

【讨论】:

  • 是的,我正在使用数据框,我使用向量使示例尽可能可读,我仍在努力使用 ggplot,所以感谢您的回答!
  • @Irene,很高兴为您提供帮助。当我开始使用ggplot 时,我发现通过示例here 工作非常有用。祝你好运!
  • +1 供参考
【解决方案2】:

查看?barplot 中描述的xlimylim 参数:

barplot(a,  main=main[1], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32))
barplot(b,  main=main[2], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32))
barplot(c,  main=main[3], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32))
barplot(d,  main=main[4], xlab='RSSI', xlim=c(0, 4), ylim=c(0, 32))

xlimwidth相互影响。)

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多