【问题标题】:grouped bar graph分组条形图
【发布时间】:2011-03-01 17:32:00
【问题描述】:

我有以下数据:

bin groupname   total_dist
0   rowA    377
0   rowA    306.6
0   rowB    2.1
0   rowB    110.6
1   rowA    918.1
1   rowA    463.2
1   rowB    798.2
1   rowB    1196
2   rowA    1295.1
2   rowA    1269.1
2   rowB    698
2   rowB    1022.1

使用 R,我想制作一个条形图,其中有一个用于 rowA 的条形图和一个用于 每个 bin 的 rowB 条形图。我可以按一个或另一个(plot(total_dist~bin)plot(total_dist~groupname))对 total_dist 进行分组。但我不知道如何组合它们。

我想要一些类似于此示例的内容:

【问题讨论】:

  • 你能指定更好吗?在下图示例中,EUL、PES、EFA ... 是垃圾箱吗?该示例每组有 2 个条形...“两个条形”对应于 rowA/rowB,分组到?每个 rowX 有两个值,所以 bin 有 4 个值,所以每个“组”应该有 4 个柱? (而不是示例中的 2 个..)??请问你能画出你真正想要的样子吗?
  • 您是否将双打(rowA、rowA、rowB、rowB)“分组”为一个值,以便每个箱有 2 个条而不是 4 个?以及如何在同一个 bin 和相同的组名中“组合”total_dist(总和?意思是?)
  • @ShinTakezou:如果我的数据映射到示例图,bin=>group 和 groupname=>year。所以 bin 将是 x 轴标签,而 groupname 将对应于列颜色。
  • 每个 bin 有 4 个值,您想如何对它们进行分组?还是应该保持分离?

标签: r graphing


【解决方案1】:

这是一个经典的解决方案。 (假设您的数据框名为df

data <- tapply(df$total_dist, list(df$groupname,df$bin), sum)

barplot(data,beside=T,col=c("#ee7700","#3333ff")
,main="European Parliament Elections",xlab="Group",ylab="Seats")

legend(locator(1),rownames(data),fill=c("#ee7700","#3333ff"))

这是使用 ggplot2 的解决方案

library(ggplot2)
qplot(factor(bin),data=df,geom="bar",fill=groupname,weight=total_dist,position="dodge",
main = "European Parliament Elections", xlab="Group",ylab="Seats")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2018-12-03
    • 2021-09-19
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多