geom_bar汇总y值:可以更改吗?

时间:2020-04-13 13:34:16

标签: r ggplot2 bar-chart

我在R中创建条形图时有些挣扎。我的数据如下所示:

   country    x    y
 1 US        10   45  
 2 US        10   67  
 3 GB        50   32
 4 GB        50   11

请注意,来自同一国家/地区的观测值在x上具有相同的值。

我想比较条形图中各个国家/地区之间的x值,每个国家/地区对应一个条形图和相应的x值。但是,我的问题是以下代码总结了x的值。因此,它没有显示US-bar的值10,而是汇总了两个观察值,并给出了bar的值20。GB的例子是这样:它显示的是100而不是50。

ggplot(data = data_joined,
       mapping = aes(x = country,
                     y = x)) + 
  geom_bar(stat = "identity")

如何轻松更改此内容?

2 个答案:

答案 0 :(得分:2)

ggplot2想要在数据集中的每一行绘制一件事,因此,如果您有重复的数据,它将被绘制两次。默认值是堆叠值,因此这就是事情加倍的原因。

您可以要求使用来对这些条进行过度绘制

ggplot(data = data_joined,
        mapping = aes(x = country,
                      y = x)) + 
   geom_col(position="identity")

,但是使用没有重复数据的数据集可能更明智。根据我的名字,我猜想当您加入两个数据帧时您会得到欺骗。因此在连接之前使用数据框,而不要使用连接的数据框。或者只是每组选择一个观察值,例如

df <- data_joined %>% group_by(country) %>% filter(row_number() == 1)

,然后在条形图中将df用作data

答案 1 :(得分:1)

您可以将唯一值传递给ggplot:

ggplot(data = unique(data_joined[, c("country","x")]),
       mapping = aes(x = country,
                     y = x)) + 
  geom_bar(stat = "identity")