左边这个柱形图我们平时用的很多,见的也很多,但是右边的柱形图却并不多见,用过的人更少,因此今天我们就来看看右边的图形可以用在什么地方?怎么制作?
右边的图形俗称“不等宽柱形图”,顾名思义,就是宽度不一致的柱形图(自动生成的柱形图柱子宽度是一致的)。
最开始,当两组数据具有乘法关系的时候使用不等宽柱形图,例如在计算公司各类业务总成本时,可以用柱子的长度表示该业务产品数量,柱子的宽度表示该业务单个产品的成本,那么柱子的面积就代表该业务的总成本。
随着大家对该图表的接受程度越来越高,只要两组数据有相关关系,也可以使用,例如营业额和营业额增长率、销售额和销售资源占比、销售额和市场占有率等等。
所以作为常用图表之一,“不等宽柱形图”的制作也是职场人士必须学会的。
“不等宽柱形图”归根结底还是柱形图,所以我们要想办法把它从等宽转化为不等宽。
一、Excel实现
第一步:整理原始数据
第二步:添加辅助数据
(1)计算累计数量
累计数量有多少就代表有多少个小柱子。
在D2单元格输入公式=SUM($B$2:B2)。
(2)构建制图原始数据
因为业务种类有5种,所以要构建5列,5列的数据错开,数据内容为“成本”。
因为累计业务数量为15,所以要构建15行。
填充数据:5个种类1,那么第一列为5个28;7个种类2,那么第二列为7个21;以此类推。
B9单元格输入公式=IF(A9<=$D$2,$C$2,””)
C9单元格输入公式=IF(AND(A9>$D$2,A9<=$D$3),$C$3,””)
D9单元格输入公式=IF(AND(A9>$D$3,A9<=$D$4),$C$4,””)
E9单元格输入公式=IF(AND(A9>$D$4,A9<=$D$5),$C$5,””)
F9单元格输入公式=IF(AND(A9>$D$5,A9<=$D$6),$C$6,””)
(如果数据少也可以手动输入)
依次拖动公式完成数据填充。
第三步:插入柱形图
【插入图表】-【所有图表】-【柱形图】-【簇状柱形图】-选择3个示例图表中的第2个
第四步:美化图表
设置数据系列格式,将系列重叠修改为100%,间隙宽度修改为0%。
修改图表标题,添加对应数据后即完成“不等宽柱形图”的制作。
二、R语言实现
library(ggplot2)
library(Cairo)
library(showtext)
mydata<-data.frame(业务种类=paste0("种类",1:5),数量=c(5,2,4,3,1),成本=c(28,21,18,19,30))
mydata$xmin<-0
for (i in 2:5){
mydata$xmin[i]<-sum(mydata$数量[1:i-1])
}
#构造矩形X轴的终点(最大点)
for (i in 1:5){
mydata$xmax[i]<-sum(mydata$数量[1:i])
}
#构造数据标签的横坐标:
for (i in 1:5){
mydata$label[i]<-sum(mydata$数量[1:i])-mydata$数量[i]/2
}
ggplot(mydata)+
geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=成本,fill=业务种类),colour="black",size=0.25)+
geom_text(aes(x=label,y=成本+1.5,label=成本),size=4,col="black")+
geom_text(aes(x=label,y=-2.5,label=业务种类),size=4,col="black")+
ylab("成本")+
xlab("数量")+
ylim(-2.5,35)+
theme(panel.background=element_rect(fill="white",colour=NA),
panel.grid.major = element_line(colour = "grey60",size=.25,linetype ="dotted" ),
panel.grid.minor = element_line(colour = "grey60",size=.25,linetype ="dotted" ),
text=element_text(size=15),
plot.title=element_text(size=15,hjust=.5),#family="myfont",
legend.position="none"
)+ scale_x_continuous(breaks = NULL,labels = NULL)