【问题标题】:Creating a stacked bar plot with ggplot2使用 ggplot2 创建堆积条形图
【发布时间】:2013-05-31 19:28:53
【问题描述】:

我正在尝试创建一个堆积条形图,以显示每列 x1-4 总共 14 个观察值中有多少是 -1,有多少是 1。 我想将它们全部放在同一张图上 - 每列 1 个条形图。 这些数字可以被视为因素。

数据:

    x1   x2     x3    x4
1   -1    1     1      1
2   -1    1     1     -1
3   -1    1     1      1
4   -1    1     1      1
5   -1   -1    -1     -1
6    1    1     1      1
7   -1    1     1      1
8   -1    1    -1      1
9   -1    1    -1      1
10  -1    1     1      1
11  -1   -1    -1      1
12  -1    1    -1     -1
13  -1   -1    -1      1
14  -1   -1    -1     -1

【问题讨论】:

  • 你试过什么?看看reshape2 包中的melt,它应该是相当直接的。一般来说,ggplot 喜欢“长”格式而不是宽格式。
  • 我曾想过使用ddply 来汇总数据,但我无法将其仅按一列分组,所以我再次陷入困境......

标签: r ggplot2


【解决方案1】:

只需融化或堆叠您的 data.frame:

DF <- read.table(text="x1   x2     x3    x4
1   -1    1     1      1
2   -1    1     1     -1
3   -1    1     1      1
4   -1    1     1      1
5   -1   -1    -1     -1
6    1    1     1      1
7   -1    1     1      1
8   -1    1    -1      1
9   -1    1    -1      1
10  -1    1     1      1
11  -1   -1    -1      1
12  -1    1    -1     -1
13  -1   -1    -1      1
14  -1   -1    -1     -1",header=TRUE)

DF.stack <- stack(DF)

geom_bar 默认使用stat_bin。不用自己总结。

library(ggplot2)
ggplot(DF.stack,aes(x=ind,fill=factor(values))) + geom_bar()

如果你想要数字,请使用table(DF.stack)

【讨论】:

  • 太棒了。正是我需要的。你能提示我如何控制颜色吗?我希望 -1 为红色,1 为绿色(我是 ggplot 的新手)。
  • @haki - `scale_fill_manual(values = c("red", "blue"))`。我强烈建议阅读 ggplot 文档,它非常广泛:docs.ggplot2.org/current
猜你喜欢
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多