tianle715 发表于 2014-5-21 00:00:00

圆环图做南丁格尔玫瑰图

作图思路
我们可以把玫瑰图想象成一个很多圈的圆环图,每个扇区方向的各序列数据点,填色的个数不同,有的多则扇区半径长,有的少则扇区半径短,这样就形成了扇区半径不等的玫瑰图。



作图步骤
1、做一个100圈的圆环图
假设有12个方面的评价指标需要反映,准备一个12行*100列的数据区域,取值均为1。这只需要用鼠标拖拉即可完成。(实际请准备为12行*101列,第101列留待后用)
以此为数据源插入圆环图,得到一个100(101)圈、12个扇区的圆环图,每个圈细到只有一条圆弧线,所以待会完成的图表会足够精细。
此时圆环图自动适用当前主题配色,请在这一步时切换为自己想要的颜色主题,避免后面调整的麻烦。
设置圆环图内径为20%,使中间的圆孔变小。





2、对各扇区数据点填色
每个扇区对应一个评价指标,从内往外共有100个数据序列的100个数据点。现在要根据评价指标的值,来决定每个数据点是否填色。
通过录制宏,可知设置一个数据点有无填充色的代码就是其中红色的两行:


Sub 宏1()
'
' 宏1 宏 ----通过录制宏,获得对数据点填色或不填色的代码
ActiveSheet.ChartObjects("mychart").Activate
ActiveChart.SeriesCollection(46).Select
ActiveChart.SeriesCollection(46).Points(1).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorAccent5
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
ActiveChart.SeriesCollection(58).Select
ActiveChart.SeriesCollection(58).Points(1).Select
Selection.Format.Fill.Visible = msoFalse
End Sub


那么,编制一个12*100的循环,对所有数据点遍历一遍:对每个扇区方向,判断这100个序列,若序列id小于评价指标则填色,否则不填色。


Sub set_colors()

ActiveSheet.ChartObjects("mychart").Activate


For i = 1 To 12
For j = 1 To 100

ActiveChart.SeriesCollection(j).Select
ActiveChart.SeriesCollection(j).Points(i).Select


<span style="line-height: 18px; "> If j 布局-->属性,在图表名称下输入mychart即可。
运行宏,稍等片刻宏完成,原是一整个圆的圆环图变成了各扇区方向不等长的玫瑰图,图表主体已经完工。
将宏赋给一个按钮,以便把这个文件做成模板,方便数据更新时刷新图表。
2003中和2007以上宏略有不同,请见具体范例。



3、给各扇区添加类别名称和值显示
将E、F列的数据加入图表做饼图。方法:通过选择数据源对话框添加,或选中E、F列的辅助数据,ctrl+c复制,选中图表,ctrl+v粘贴,图表的最外多了一圈,选中该圈,图表工具-->设计-->更改图表类型 为饼图。
继续选中饼图序列(无法选择到?请通过图表工具-->设计-->图表元素下拉框,第102个序列就是),设置淡灰色填充,白色边框线,这时图表有了扇区分割的底色,减少了扇区不等的突兀感。中心部分可以绘制一个圆圈覆盖住饼图的分割线。
继续选中饼图序列,添加数据标签显示为类别名称,位置在外。


4、给图表一个外圈美化
玫瑰图有个完整的外圈会更美观。在第1步准备数据时如果多准备1列,那么图表将有第101个圈,第2步宏填色时不会用到它。现在选中这个序列,设置其无填充色,但边框线为深灰色、3磅,得到一个完整的外圈。


至此,用圆环图制作的玫瑰图已完成,并且做成了模板,只需要填入数据、点击按钮,即可获得刷新的玫瑰图。你觉得这个作图思路如何,相比之前的面积雷达图方法呢,你有何好方法,欢迎讨论。


本例涉及知识点:构图思路,录制和修改宏,组合图表类型。
制作难度:★★★★
实用性: ★★★


图表运用
1、范例中设置了12个方面的评价指标,如果你只需要8个评价指标,也就是只需要8个扇区的玫瑰图,怎么办?很简单,在模板中直接整行删除图中第15-18行即可,包括指标数据和两个辅助区域的辅助数据。


2、用这个方法也可以制作那种每个扇区方向有多层堆积的玫瑰图,做法:在宏遍历时,每个扇区方向的100个数据点,要根据数据源用select case来多条件判断,分别填充不同的颜色,而不仅是有无填色。
这种情况下数据标签就需要手动来添加了,使用任何其他软件,也都得手动做标签吧。



3、用这个方法也可以制作那种呈扇面形状的玫瑰图,要点是设置一个隐藏的占位扇区,其数据源取值=sum(评价指标个数)*2,设置圆环图的第一扇区起始角度为300度,那么扇面的幅度将是从左到右120度。


4、再次重申,个人认为,玫瑰图在信息图中运用比较好,在日常商务工作中要慎用。

lilian123 发表于 2017-9-14 10:43:40

PPT学习论坛,找到组织了!

lxc16888 发表于 2017-9-19 09:38:33

很巧妙的方法。
页: [1]
查看完整版本: 圆环图做南丁格尔玫瑰图