如何在ggplot2中创建包含NA数据的分组条形图?

时间:2016-10-19 13:19:22

标签: r ggplot2

我想使用带有两列的data.frame来绘制分组的条形图:

modifications1 | modifications2 
UNIMOD:730     |      NA
UNIMOD:4       | UNIMOD:4
UNIMOD:214     |UNIMOD:214
UNIMOD:21      |UNIMOD:21
UNIMOD:35      |UNIMOD:35
UNIMOD:4       |UNIMOD:4
UNIMOD:4       |UNIMOD:4
UNIMOD:4       |     NA
NA             |UNIMOD:35
         ... n

这是我想要的一个例子,但是标签中每行的名称。

enter image description here

这里有一个可重现的例子:

df <- data.frame(modifications1=c("UNIMOD:108","UNIMOD:200","UNIMOD:300","UNIMOD:400","UNIMOD:108","UNIMOD:108","UNIMOD:108","UNIMOD:108","UNIMOD:600"), modifications2=c(NA,"UNIMOD:200","UNIMOD:300","UNIMOD:400","UNIMOD:108","UNIMOD:108","UNIMOD:108",NA,"UNIMOD:600"))

我在这个页面找不到像我这样的例子。

我试过用这个:

    table1 <- data.frame(table(dataprueba$modifications.1))
table2 <- data.frame(table(dataprueba$modifications.2))

ggplot(NULL, aes(Var1, Freq)) + 
    geom_bar(aes(fill = "table1"), data = table1, alpha = 0.5, stat="identity") +
    geom_bar(aes(fill = "table2"), data = table2, alpha = 0.5, stat="identity") +
    guides(fill=FALSE)+ 
    theme(axis.text.x = element_text(angle = 90, hjust = 1))

但这不是我真正想要的。

1 个答案:

答案 0 :(得分:1)

You can melt your data set and then make a bar plot with count stat:

library(ggplot2)
library(reshape2)
ggplot(melt(df,measure.vars = names(df)), aes(x = value, fill = variable)) + 
  geom_bar(stat = "count", position = "dodge") + 
  theme(axis.text.x = element_text(angle = 20, hjust = 0.5, vjust = -0.1)) + 
  scale_fill_manual(values = c('#C73200', '#0072B2'))

enter image description here