图表类型与常用属性

xlwings中用chart(Chart)对象表示图表,3.2节介绍的创建图表的方法可以直接返回chart(Chart)对象,或通过Shape对象的Chart属性间接获取Chart对象。然后利用chart(Chart)对象的属性和方法就可以对图表的类型、坐标系、标题、图例等进行各种设置。

对于多变量数据绘制的复合图表类型,图中的每组简单图形称为一个序列。可以从复合图形中获取序列对象并利用其属性和方法进行设置。比如改变这个序列表示的一组简单图形的图表类型、颜色、线型、点标记和数据标签等。[大谦Excel,dqexcel点com]

图表类型

创建Excel图表时需要指定图表类型。Excel支持近百种常见图表类型。可以用Excel直接指定,也可以用Python xlwings在编程时进行指定。

Excel图表支持数十种图表类型,对于对象Chart,设置图表类型如下所示:

code.vba
cht.ChartType=xlColumnClustered

ChartType属性的取值如表2-1所示。

表2-1 Excel的图表类型

常数名称 说 明
xl3DArea -4098 三维面积图
xl3DAreaStacked 78 三维堆栈面积图
xl3DAreaStacked100 79 百分比堆栈面积图
xl3DBarClustered 60 三维复合条形图
xl3DBarStacked 61 三维堆栈条形图
xl3DBarStacked100 62 三维百分比堆栈条形图
xl3DColumn -4100 三维柱形图
xl3DColumnClustered 54 三维复合柱形图
xl3DColumnStacked 55 三维堆栈柱形图
xl3DColumnStacked100 56 三维百分比堆栈柱形图
xl3DLine -4101 三维折线图
xl3DPie -4102 三维饼图
xl3DPieExploded 70 分离型三维饼图
xlArea 1 饼图
xlAreaStacked 76 堆栈面积图
xlAreaStacked100 77 百分比堆栈面积图
xlBarClustered 57 复合条形图
xlBarOfPie 71 复合条饼图
xlBarStacked 58 堆栈条形图
xlBarStacked100 59 百分比堆栈条形图
xlBubble 泡泡图
xlBubble3DEffect 87 三维泡泡图
xlColumnClustered 51 复合柱形图
xlColumnStacked 52 堆栈柱形图
xlColumnStacked100 53 百分比堆栈柱形图
xlConeBarClustered 102 复合条形圆锥图
xlConeBarStacked 103 堆栈条形圆锥图
xlConeBarStacked100 104 百分比堆栈条形圆锥图
xlConeCol 105 三维柱形圆锥图
xlConeColClustered 99 复合柱形圆锥图
xlConeColStacked 100 堆栈柱形圆锥图
xlConeColStacked100 101 百分比堆栈柱形圆锥图
xlCylinderBarClustered 95 复合条形圆柱图
xlCylinderBarStacked 96 堆栈条形圆柱图
xlCylinderBarStacked100 97 百分比堆栈条形圆柱图
xlCylinderCol 98 三维柱形圆柱图
xlCylinderColClustered 92 复合柱形圆锥图
xlCylinderColStacked 93 堆栈柱形圆锥图
xlCylinderColStacked100 94 百分比堆栈柱形圆柱图
xlDoughnut -4120 圆环图.
xlDoughnutExploded 80 分离型圆环图
xlLine 4 折线图
xlLineMarkers 65 数据点折线图
xlLineMarkersStacked 66 堆栈数据点折线图
xlLineMarkersStacked100 67 百分比堆栈数据点折线图
xlLineStacked 63 堆栈折线图
xlLineStacked100 64 百分比堆栈折线图
xlPie 5 饼图
xlPieExploded 69 分离型饼图
xlPieOfPie 68 复合饼图
xlPyramidBarClustered 109 复合条形棱锥图
xlPyramidBarStacked 110 堆栈条形棱锥图
xlPyramidBarStacked100 111 百分比堆栈条形棱锥图
xlPyramidCol 112 三维柱形棱锥图
xlPyramidColClustered 106 复合柱形棱锥图
xlPyramidColStacked 107 堆栈柱形棱锥图
xlPyramidColStacked100 108 百分比堆栈柱形棱锥图
xlRadar -4151 雷达图.
xlRadarFilled 82 填充雷达图
xlRadarMarkers 81 数据点雷达图
xlRegionMap 140 地图
xlStockHLC 88 盘高-盘低-收盘图
xlStockOHLC 89 开盘-盘高-盘低-收盘图
xlStockVHLC 90 成交量-盘高-盘低-收盘图
xlStockVOHLC 91 Volume-开盘-盘高-盘低-收盘图
xlSurface 83 三维曲面图
xlSurfaceTopView 85 曲面图(俯视图)
xlSurfaceTopViewWireframe 86 曲面图(俯视线框图)
xlSurfaceWireframe 84 三维曲面图(线框图)
xlXYScatter -4169 散点图
xlXYScatterLines 74 折线散点图
xlXYScatterLinesNoMarkers 75 无数据点折线散点图
xlXYScatterSmooth 72 平滑线散点图
xlXYScatterSmoothNoMarkers 73 无数据点平滑线散点图

利用3.2节提供的数据,下面用Shapes对象的AddChart2方法创建更多类型的图表。完整代码见:Samples->ch03图表基础-> 07 图表类型->py.py。

code.vba
Sub CreateCharts()
  ActiveSheet.Range("A1").CurrentRegion.Select  '数据
  ActiveSheet.Shapes.AddChart2 -1, xlColumnClustered, _
                             20, 150, 300, 200, True
  ActiveSheet.Shapes.AddChart2 -1, xlBarClustered, _
                             400, 150, 300, 200, True
  ActiveSheet.Shapes.AddChart2 -1, xlConeBarStacked, _
                             20, 400, 300, 200, True
  ActiveSheet.Shapes.AddChart2 -1, xlLineMarkersStacked, _
                             400, 400, 300, 200, True
  ActiveSheet.Shapes.AddChart2 -1, xlXYScatter, _
                             20, 650, 300, 200, True
  ActiveSheet.Shapes.AddChart2 -1, xlPieOfPie, _
                             400, 650, 300, 200, True
End Sub

运行代码,生成不同类型的图表如图2-4所示。

Document Image
\[\]

图2-4 创建不同类型的图表

设置和修改图表的属性

创建图表后,可以用Excel或Python xlwings对图表属性进行设置和修改。

前一小节用Chart对象的ChartType属性设置了图表的类型,实际上,Chart对象还有很多其他属性和方法,使用它们可以对图表进行各种设置。Chart对象常见的属性和方法如表2-2所示。这些属性和方法的用法在后面会陆续进行介绍。

表2-2 Chart对象的常用属性

名 称 意 义
BackWall 返回Walls对象,该对象允许用户单独对三维图表的背景墙进行格式设置
BarShape 条形的形状
ChartArea 返回ChartArea对象,该对象表示图表的整个图表区
ChartStyle 返回或设置图表的图表样式。可以使用介于1到48之间的数字设置图表样式
ChartTitle 返回ChartTitle对象,表示指定图表的标题
ChartType 返回或设置图表类型
Copy 将图表工作表复制到工作簿的另一位置
CopyPicture 将图表以图片的形式复制到剪贴板
DataTable 返回DataTable对象,表示此图表的数据表
Delete 删除图表
Export 将图表以图片格式导出到文件
HasAxis 返回或设置图表上显示的坐标轴
HasDataTable 如果图表有数据表,则该属性值为True,否则为False
HasTitle 设置是否显示标题
Legend 返回一个Legend对象,表示图表的图例
Move 将图表工作表移动到工作簿中的另一位置
Name 图表的名称
PlotArea 返回一个PlotArea对象,表示图表的绘图区
PlotBy 返回或设置行或列在图表中作为数据系列使用的方式。可为以下XlRowCol常量之一:xlColumns或xlRows
SaveAs 图表另存到不同的文件中
Select 选择图表
SeriesCollection 返回包含图表所有序列的集合
SetElement 设置图表元素
SetSourceData 绑定绘制图表的数据
Visible 返回或设置一个XlSheetVisibility值,用于确定对象是否可见
Walls 返回一个Walls对象,此表示三维图表的背景墙