【问题标题】:R - barplot that displays sums of values of 2 y colums grouped by different variablesR - 显示按不同变量分组的 2 y 列的值总和的条形图
【发布时间】:2018-01-15 14:51:38
【问题描述】:

我想创建一个条形图,其中R显示按变量分组的数据的2 columns 的总和。数据是这样设置的:

"city" "n" "y" <br>
mon 100 200 <br>
tor 209 300 <br>
edm 98 87 <br>
mon 20 76 <br>
tor 50 96 <br>
edm 62 27 <br>

生成的图应将城市作为x-axis,每个城市有 2 个条形图,1 个代表该城市中 "n" 的总和,另一个代表该城市中 "y" 的总和。

如果可能,还可以将每个条中的总和显示为标签?

我尝试了以下方法:

d <- melt(data[,c('City','n','y')],id.vars = 1)

plot <- ggplot(d,aes(x = City,y = value)) + geom_bar(aes(fill = variable),stat = "identity",position = "dodge")

这会生成所需格式的图,但值不是组的总和。

我尝试将数据聚合成这样的总和:

sum_data <- aggregate(. ~ City,data=raw_data,sum)

这给了我想要的每个城市的总和,但由于某种原因,输出中缺少 1 个城市。

使用此代码进行绘图:

ggplot(sum_data,aes(x = City,y = n)) + geom_bar(aes(fill = y),stat = "identity",position = "dodge")

给出了一个条形图,每个城市一个条形图显示 y 的总和作为颜色渐变。考虑到 geom_bar 中的“闪避”命令,这不是我所期望的。

谢谢。

【问题讨论】:

  • 本站不是给你做作业的。让我们看看您自己尝试过的一些代码,然后向我们提出一个定义明确的问题,说明哪些事情不起作用。

标签: r bar-chart


【解决方案1】:

让它以这种方式工作:

使用 readr 导入数据,只输入具有数值的列(“n”和“y”)和包含组的列(“city”)。

按组(“城市”)聚合数据,以便每个变量都有一个总和:

sum_data <- aggregate(.~City__c,data=raw_data,sum)

重塑数据,使组现在成为变量(将有 3 列:“City”、“variable”、“value”):

library(reshape2)
library(ggplot2)
sums <- melt(sum_data)

使用 ggplot 绘图:

ggplot(sums, aes(x = City, y= value, fill = variable, ymax = 1000)) +
  geom_bar(stat="identity", width=.8, position = "dodge")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多