R语言&EXCEL绘制瀑布图

浏览: 1452

瀑布图是反映在诸多原因和因素下,使得一个状态演变成另一个状态的过程图表,这个过程中我们可以了解哪些是导致该变化结果的主要因素,以及产生影响的强弱,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)

Clipboard Image.png

二、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')

Clipboard Image.png

三、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

Clipboard Image.png

四、使用EXCEL制作


选中除阴影部分的所有列点击插入堆叠柱状图,其中Dummy列的数据公式=IF(B3<0,SUM($B$2:B3),SUM($B$2:B2)) ;+,-分别为=IF(B6<0,0,B6)

IF(B4>0,0,ABS(B4)) 。

Clipboard Image.png

任选一柱把分类间距设置为无

Clipboard Image.png

点击Dummy设置为无填充色

Clipboard Image.png

点击所有列的数据标签分别设置,Before/After列勾选类别值和值,并设置分割符为换行符,Dummy系列仅勾选类别名称标签位置设置为在数据标签内,+,-因素的数据标签的数据格式分别设置为[=0]"";+#,###,[=0]"";-#,###其他设置同Before/After.

Clipboard Image.png

最后进行一些坐标,网格线,标题,配色等对图表进行修饰,由于操作简单这里就不再写了,最终效果如下图所示

Clipboard Image.png

文章选摘:EasyCharts公众号

推荐 2
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册