我在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")
如何轻松更改此内容?
答案 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")