两个数据库中元素频率为ggplot2的条形图

时间:2019-07-06 13:48:02

标签: r ggplot2 data-visualization

我有一个元素列表;在这里,我选择了字母“ a,o,u,ü”。 及其频率在两个数据库中。

df <- as.data.frame(cbind( letter = c("a", "o", "u", "ü"), Freq.english = c("10", "50", "20", ""), Freq.german = c("10", "50", "10", "10") ))

如何使用ggplot2在一张图中显示它们的频率?

我可以分别显示它们,也可以稍后加入它们:

p.df1 <- ggplot(df,aes(x = letter ,y=Freq.english))+geom_bar(stat ="identity")

p.df2 <- ggplot(df,aes(x = letter ,y=Freq.german))+geom_bar(stat ="identity")

但是,如果它们紧挨着发生,也许会很好 甚至被颜色隔开。 (类似于这些解决方案ggplot bar plot side by side using two variables) THX

更新:

我设法使链接适应我的数据框:

df <- reshape::melt(df, id = c("letter")) ggplot(data = df, aes(x = letter, y = value, fill = droplevels(variable) )) + geom_bar(stat = "identity")+ facet_wrap(~ variable)

现在,值轴不是从0开始,因此即使出现0,Freq.english的条也位于“ü”。

此外,我需要按升序对两个变量的值进行独立排序。

THX

1 个答案:

答案 0 :(得分:1)

我想这是..

df %>% 
  gather(key = langauge, value = Freq, -letter) %>% 
  mutate(Freq = as.integer(Freq)) %>% 
  ggplot(aes(letter, Freq, fill = langauge)) + 
  geom_bar(stat = "identity", position = "dodge")