【问题标题】:plot stacked bar plot in R在R中绘制堆积条形图
【发布时间】:2011-09-28 12:47:32
【问题描述】:

我想用这样的数据在 R 中创建直方图 [堆积条形图]:

Period = c(1,1,2,2,3,3,4,4)                              
Sample = c("A","B","A","B","A","B","A","B")
Value1 = c(3,2,6,7,3,2,1,2)
Value2 = c(1,0,5,2,2,0,2,5)
x <- data.frame(Period,Sample,Value1,Value2)

是否可以在 X 轴上显示“期间”和“样本”以及“堆积条形图”中的值(“Value1”和“Value2”)。所以第一个直方图的高度为 4(分别用于 Value1 和 Value2) 提前谢谢你的帮助! 最好的问候。

【问题讨论】:

  • 作业什么时候交?
  • 您描述的是堆积条形图,而不是直方图。
  • 你为什么称它为直方图 - 你甚至在 Q 中提到了一个条形图,这正是你想要的。这些不是一回事。
  • 提示:?rbind 构造一个值矩阵。 ?barplot,特别注意 height 参数,用于堆积条形图本身。

标签: r plot


【解决方案1】:

您描述的是堆积条形图,而不是直方图。使用ggplot,您可以这样做:

library(ggplot2)
library(reshape2)

x <- data.frame(
  Period = c(1,1,2,2,3,3,4,4),
  Sample = c("A","B","A","B","A","B","A","B"),
  Value1 = c(3,2,6,7,3,2,1,2),
  Value2 = c(1,0,5,2,2,0,2,5)
)

mx <- melt(x, id.vars=1:2)
ggplot(mx, aes(x=Period, y=value, fill=variable)) + 
  geom_bar(stat="identity") + 
  facet_grid(~Sample)

【解决方案2】:

它不像 ggplot 解决方案那么漂亮,但是

v <- rbind(Value1,Value2)
barplot(v,beside=FALSE,names=levels(interaction(Period,Sample)),legend=TRUE)

似乎有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2016-05-24
    相关资源
    最近更新 更多