瀑布图是反映在诸多原因和因素下,使得一个状态演变成另一个状态的过程图表,这个过程中我们可以了解哪些是导致该变化结果的主要因素,以及产生影响的强弱,R语言中一共有三个包可以做,它们分别是waterfall,waterfalls基于ggplot2绘图系统,rAmCharts(绘制动态交互瀑布图),在文章的最后介绍如何用EXCEL绘制瀑布图。
一、waterfall包绘制
这个包绘制的是最简单的瀑布图,对图片的属性修改不够灵活,不推荐大家使用只做了解即可
library(waterfall) mydata=data.frame(Item=as.factor(c('Before','Factor A','Factor B','Factor C','Factor D', 'Factor E','Factor F','Factor G')), data=c(325,-32,-105,38,86,97,232,389)) waterfallchart(Item~data,data=mydata)
二、waterfalls包
这个包是基于ggplot2编写的,因此ggplot2的所有函数及其扩展包中的函数都可以用来修饰瀑布图,另一个原因是这个包只有一个函数waterfallchart该函数包含了20几个参数基本满足了绘制瀑布图的要求,如果还想进一步对图片进行美化可以参考ggplot2族中的其他函数
library(waterfalls) library(ggplot2) library(ggthemes) waterfall(.data = mydata , rect_text_labels = paste(levels(mydata$Item),'\n',mydata$data), fill_colours = c('darkslateblue','chocolate','chocolate','chartreuse', 'chartreuse','chartreuse','chartreuse','chartreuse'), calc_total = TRUE, total_rect_color = "darkslateblue", total_rect_text = paste('After','\n',sum(mydata$data)), total_rect_text_color = "black", total_axis_text = "After", rect_width = 0.9, draw_axis.x = "behind", rect_border = "white", fill_by_sign = FALSE)+ theme_map()+ geom_hline(yintercept = 0, colour = 'skyblue')
三、rAmCharts
这个包可以做出动态的瀑布图,难点在于数据形式的构造,多出一列符号列
mydata=data.frame(label=c('Before','Factor A','Factor B','Factor C','Factor D', 'Factor E','Factor F','Factor G','After'), value=c(325,32,105,38,86,97,232,389,1030), operation=c('total','minus','minus','plus','plus','plus','plus','plus','total')) amWaterfall(data = mydata, show_values = TRUE
四、使用EXCEL制作
选中除阴影部分的所有列点击插入堆叠柱状图,其中Dummy列的数据公式
=IF(B3<0,SUM($B$2:B3),SUM($B$2:B2)) ;+,-分别为=IF(B6<0,0,B6)
IF(B4>0,0,ABS(B4)) 。
任选一柱把分类间距设置为无
点击Dummy设置为无填充色
点击所有列的数据标签分别设置,Before/After列勾选类别值和值,并设置分割符为换行符,Dummy系列仅勾选类别名称标签位置设置为在数据标签内,+,-因素的数据标签的数据格式分别设置为[=0]"";+#,###,[=0]"";-#,###其他设置同Before/After.
最后进行一些坐标,网格线,标题,配色等对图表进行修饰,由于操作简单这里就不再写了,最终效果如下图所示
文章选摘:EasyCharts公众号
|
请发表评论