GGPLOT2和堆积条形图负值(ggplot2 and a Stacked Bar Chart wi

2019-06-21 15:56发布

考虑下面的数据集:

   Division Year OperatingIncome
1  A  2012           11460
2  B  2012            7431
3  C  2012           -8121
4  D  2012           15719
5  E  2012             364
6  A  2011           12211
7  B  2011            6290
8  C  2011           -2657
9  D  2011           14657
10 E  2011            1257
11 A  2010           12895
12 B  2010            5381
13 C  2010           -2408
14 D  2010           11849
15 E  2010             517

如何完成GGPLOT2包括负值堆积条形图? 下面是我使用的基本图表序列:

ggplot(income_m, aes(x=Year, y=OperatingIncome, fill=Division)) + geom_bar() +
+ scale_fill_brewer(type = "seq", palette = 1)

这将返回一个错误:

警告消息:富集和没有明确定义,当YMIN = 0

和而不是预期的结果 - 显示负值的X轴的下方 - 它们仅仅是不存在堆积条形图英寸 是否有生产的所有值,正反两方面的图表的方式,占了?

Answer 1:

更新 :由于GGPLOT2 2.2.0的,堆叠为负值是自动处理,而无需创建用于正和负值不同的层。

如果我知道你在找什么,关键是要放在单独的图层两个正面和负面的数据,并且还要用stat = "identity"

dat <- read.table(text = "   Division Year OperatingIncome
1  A  2012           11460
2  B  2012            7431
3  C  2012           -8121
4  D  2012           15719
5  E  2012             364
6  A  2011           12211
7  B  2011            6290
8  C  2011           -2657
9  D  2011           14657
10 E  2011            1257
11 A  2010           12895
12 B  2010            5381
13 C  2010           -2408
14 D  2010           11849
15 E  2010             517",header = TRUE,sep = "",row.names = 1)

dat1 <- subset(dat,OperatingIncome >= 0)
dat2 <- subset(dat,OperatingIncome < 0)
ggplot() + 
    geom_bar(data = dat1, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") +
    geom_bar(data = dat2, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") +
    scale_fill_brewer(type = "seq", palette = 1)



文章来源: ggplot2 and a Stacked Bar Chart with Negative Values