面积图

与柱状图类似,面积图主要也是用面来表示数据。它将连接数据点得到的折线与X轴对于坐标范围围成的面用颜色填充得到面积图。面积图包括简单面积图、堆叠面积图和百分比堆叠面积图,可以表现分类型、数值型和时间序列等各种类型的数据。

简单面积图

Document Image
\[\]

图4-26 简单面积图

下面用Excel文件data.xlsx中的数据绘制简单面积图。完整代码见:Samples->ch06 分类型图表->56 简单面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:B10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlArea,20,20,350,250,True)
cht=shp.Chart    #获取图表
#单色填充
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((0,176,80))
cht.SeriesCollection(1).Format.Fill.Transparency=0.5    #半透明
#边线颜色
cht.SeriesCollection(1).Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((0,176,80))
cht.SeriesCollection(1).Format.Line.Weight=3    #线宽

运行代码生成图4-26。

复合面积图

Document Image
\[\]

图4-27 复合面积图

下面用Excel文件data.xlsx中的数据绘制复合面积图。完整代码见:Samples->ch06 分类型图表->57 复合面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:C10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlArea,20,20,350,250,True)
cht=shp.Chart    #获取图表
#序列1的颜色
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((0,0,255))
#序列2的颜色
cht.SeriesCollection(2).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,128,0))
cht.SeriesCollection(1).Format.Fill.Transparency=0.5    #半透明
cht.SeriesCollection(2).Format.Fill.Transparency=0.5    #半透明

运行代码生成图4-27。

堆叠面积图

Document Image
\[\]

图4-28 堆叠面积图

下面用Excel文件data.xlsx中的数据绘制堆叠面积图。下面的代码创建堆叠面积图。完整代码见:Samples->ch06 分类型图表->58 堆叠面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:C10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlAreaStacked,20,20,350,250,True)
cht=shp.Chart    #获取图表

运行代码生成图4-28。

百分比堆叠面积图

绘制百分比堆叠面积图之前,首先需要转换绘图数据。面积图中,每个面积顶部对应折线是一个序列,横轴每个分类处不同序列的点构成一个分组。数据转换就是计算分组中的每个值与所在分组所有值的和的百分比。然后利用百分比数据绘制堆叠面积图。

Document Image
\[\]

图4-29 百分比堆叠面积图

下面用Excel文件data.xlsx中的数据绘制百分比堆叠面积图。完整代码见:Samples->ch06 分类型图表->59 百分比堆叠面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:C10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlAreaStacked100,20,20,350,250,True)
cht=shp.Chart    #获取图表

运行代码生成图4-29。

渐变填充面积图

如果觉得面积图颜色过于单一,可以考虑用渐变色填充面积图。

Document Image
\[\]

图4-30 渐变色填充的堆叠面积图

下面用Excel文件data.xlsx中的数据绘制渐变色填充的堆叠面积图。完整代码见:Samples->ch06 分类型图表->60 渐变色堆叠面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A2:D10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlAreaStacked,20,20,350,250,True)
cht=shp.Chart    #获取图表
#各序列垂向单色渐变填充
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((0,0,255))
cht.SeriesCollection(1).Format.Fill.OneColorGradient(1,1,1)
cht.SeriesCollection(2).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((0,176,80))
cht.SeriesCollection(2).Format.Fill.OneColorGradient(1,1,1)
cht.SeriesCollection(3).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,128,0))
cht.SeriesCollection(3).Format.Fill.OneColorGradient(1,1,1)

运行代码生成图4-30。

三维面积图

Document Image Document Image
\[\]

图4-31 三维简单面积图 图4-32 三维堆叠面积图

下面用Excel文件data.xlsx中的数据绘制三维简单面积图。完整代码见:Samples->ch06 分类型图表->61 三维面积图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A2:B10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xl3DArea,20,20,350,250,True)
cht=shp.Chart    #获取图表
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((0,176,80))

运行代码生成图4-31。

Excel可以绘制三维堆叠面积图。

下面用Excel文件data.xlsx中的数据绘制三维堆叠面积图图。完整代码见:Samples->ch06 分类型图表->62 三维面积图2->py.py。

code.python
#... 省略部分代码
sht.api.Range('A2:D10').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xl3DAreaStacked,20,20,350,250,True)
cht=shp.Chart    #获取图表

运行代码生成图4-32。