我有一个元素列表;在这里,我选择了字母“ 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
答案 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")