如何使用ggplot绘制每个重复因子的单独条形图

时间:2018-07-19 23:33:34

标签: r ggplot2 bar-chart

给出的数据集是:

df <- data.frame(var =c("a","b","c","a","b","d") , value = c(1:6))

> df
  var value
1   a     1
2   b     2
3   c     3
4   a     4
5   b     5
6   d     6
> str(df)
'data.frame':   6 obs. of  2 variables:
 $ var  : Factor w/ 4 levels "a","b","c","d": 1 2 3 1 2 4
 $ value: int  1 2 3 4 5 6
> 

在这里,我们看到变量ab重复了两次,我们的要求是 绘制每个变量但变量ab的条形图,我们需要 每个ab的单独栏。

我尝试了以下代码:

ggplot(data = df , aes(x = var , y = value)) +
       geom_bar(stat = "identity")+
  geom_text(aes(label = value),color="white",fontface = "bold",size =2.5,vjust = 1.8)

此处ab的值堆积并绘制在单个栏中,请帮助解决此问题

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要创建一个新变量以映射到x轴,它可以是1到N的简单向量:

df$row_num = 1:nrow(df)

ggplot(data = df , aes(x = row_num , y = value, fill = var)) +
    geom_bar(stat = "identity")+
    geom_text(aes(label = value),color="white",fontface = "bold",size =2.5,vjust = 1.8)

输出:

Bar plot