面积图

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

简单面积图

Document Image
\[\]

图4-26 简单面积图

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:B10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xlArea, 200, 20, 350, 250, True).Chart
  cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
  cht.SeriesCollection(1).Format.Fill.Transparency = 0.5
  cht.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(0, 176, 80)
  cht.SeriesCollection(1).Format.Line.Weight = 3
  SetStyle cht
End Sub

运行代码生成图4-26。

复合面积图

Document Image
\[\]

图4-27 复合面积图

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:C10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xlArea, 200, 20, 350, 250, True).Chart
  cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
  cht.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(255, 128, 0)
  cht.SeriesCollection(1).Format.Fill.Transparency = 0.5
  cht.SeriesCollection(2).Format.Fill.Transparency = 0.5
  SetStyle cht
End Sub

运行代码生成图4-27。

堆叠面积图

Document Image
\[\]

图4-28 堆叠面积图

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:C10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xlAreaStacked, 200, 20, 350, 250, True).Chart
  SetStyle cht
End Sub

运行代码生成图4-28。

百分比堆叠面积图

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

Document Image
\[\]

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

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:C10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xlAreaStacked100, 200, 20, 350, 250, True).Chart
  SetStyle cht
End Sub

运行代码生成图4-29。

渐变填充面积图

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

Document Image
\[\]

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

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:D10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xlAreaStacked, 200, 20, 350, 250, True).Chart
  cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 0, 255)
  cht.SeriesCollection(1).Format.Fill.OneColorGradient msoGradientHorizontal, 1, 1
  cht.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
  cht.SeriesCollection(2).Format.Fill.OneColorGradient msoGradientHorizontal, 1, 1
  cht.SeriesCollection(3).Format.Fill.ForeColor.RGB = RGB(255, 128, 0)
  cht.SeriesCollection(3).Format.Fill.OneColorGradient msoGradientHorizontal, 1, 1
  SetStyle cht
End Sub

运行代码生成图4-30。

三维面积图

Document Image Document Image
\[\]

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

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

code.vba
Sub CreateChart()
  Dim cht As Chart
  ActiveSheet.Range("A1:B10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xl3DArea, 200, 20, 350, 250, True).Chart
  cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
  SetStyle cht
End Sub

运行代码生成图4-31。

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

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

code.vba
Sub CreateChart2()
  Dim cht As Chart
  ActiveSheet.Range("A1:D10").Select  '数据
  Set cht = ActiveSheet.Shapes.AddChart2(-1, _
          xl3DAreaStacked, 200, 20, 350, 250, True).Chart
  SetStyle cht
End Sub

运行代码生成图4-32。