feedback

意见

反馈

back-to-up

回到

顶部

怎样做一张“半圈式玫瑰图”?

数据侠

· 刘万祥

作者 | 刘万祥   2017-09-30

DT君前段时间的文章《公司楼下竟然没有星巴克,你想过为什么吗?》 中的一幅星巴克分布玫瑰图,引起了多位可视化技术大牛的兴趣。这不,又有业内大牛对DT君的这张图进行推演还原啦~

正文

杜雨小童鞋昨天写了个贴用R语言画DT财经最近的一幅星巴克门店数图表,玫瑰图的变化形式(点此查看),我们也来说说吧。

这种形式的图表,我看到最初来自一幅非常受好评的关于伦敦艺术家的数据新闻作品:

这份作品是如何做的呢,作者介绍是在ggplot里画出初步的图,然后导出pdf,再导入AI继续美化完成,ggplot的代码如下:

ggplot(Data,aes(order,origin))+

geom_segment(aes(xend=order,yend=Age))+

geom_segment(aes(x=order,y=st_age, xend=order, yend=end_age),col="red")+

geom_segment(aes(x=order,y=st_age2, xend=order,yend=end_age2), col="yellow")+

  coord_polar()

如果要在 Excel 里做玫瑰图,可以使用雷达图或者圆环图来实现,我们之前写过很多篇帖子,大家有兴趣可以翻翻以前的帖子,可惜的是很多帖子都被搜狐丢失了。例图如下。

今天借DT财经的这个图表,再来介绍一次。

首先,对于这样的数据源,日常工作我们做个常规的柱形图或者条形图就可以了,如下图。做成例图的玫瑰图只适合传播用途的信息图,因为大众喜欢新鲜花哨,但不适合日常工作。

(图片说明:这个柱形图我是使用了《Excel图表模板大法》里的DT风格模板,一键出图就是第一财经的风格,只需几秒钟,大大提高了工作效率。)

雷达图做玫瑰图的思路,是准备360行的数据源,做带阴影的雷达图即可。这里玫瑰图只有半圈,因此数据源中有180行需要设置为0来占位。

图中,id从1到360,id2从1到20、每个重复9次,D列按id2提取指标数据,每次变化时要归0一次,以使图形断开。E列用来遮挡出中心的圆心,所以D列指标上已提前加上这个圆心。

C6:=CEILING((B6)/$B$3,1)

D6:=IF(C6=C7,IFERROR(INDEX(data!$D$6:$D$25,单序列!C6)+$D$3,0),$D$3)

这里是按原来顺序组织id2数据的,那么做出的图表还需要截图或者拍照后旋转一下。如果不想旋转,可以在准备id2数据时调整一下顺序,先 11~20,后 1~10,出图即是水平的,如下图。

这里只使用了一个序列,因此图表只能填一种颜色,要分开填色的话,序列也要准备多个,需要分离,可以如下图准备数据。

图中,增加E~X列20个序列,E6的公式,注意混合地址的写法:

E6:=IF($C6=E$5,$D6,NA())

用框内数据做雷达图,即得到20个序列的玫瑰图,可以分开设置颜色,这里略去了。按照我们以往的做法,图表的标签等都是需要使用辅助数据去显示的,考虑到信息图多是一次性的,不需要周期更新,所以可以复制图表后贴到PPT里取消组合后进行编辑排版,这些后续步骤这里也略去了。

做的过程中发现,2016版显示雷达图的边缘都是坑坑洼洼的,没有之前版本光滑,应该是不足。

好,这是今天的帖子。这个范例只适合传播用途,在日常工作中实用性并不大,不过还是可以练习一些 Excel 知识和技巧,比如:填充序列,ceiling,max,index,iferror,混合地址,模板大法,双层标签,条件格式......

数据侠门派

本文数据侠刘万祥,Excel商业图表可视化专家,《Excel图表之道》、《用地图说话》作者,网易云课堂独家签约讲师,长期专注于职场办公商业图表与数据可视化沟通。

如何加入数据侠

“数据侠”栏目网罗全球最IN的数据侠客,利用人工智能、机器学习等各种前瞻算法,从数据的视角洞察消费生活的方方面面,打造理性酷炫、活泼有趣的数据分析盛宴。用大数据,阐述事实及其背后的故事和逻辑趋势。

DT时代超级英雄正在组队!你也想要成为数据侠吗?请将你脑洞大开的数据作品,发到数据侠联盟盟主程一祥邮箱:chengyixiang@yicai.com


(了解更多有趣又有料的商业数据分析,欢迎关注DT财经微信公众号“DTcaijing”,下载“DT·一财”APP)

分享这篇文章到