图表元素设置

本节介绍图表元素如图表区域、绘图区、图例、标题等的设置。

SetElement方法

使用Chart对象的SetElement方法可以为指定图表设置图表元素。该方法有一个参数,提供进行设置的选项。参数取值如表5-9所示。可见,该方法提供了很多图表元素的快捷设置途径。注意,这些设置不一定适合所有图表类型。

表5-9 SetElement方法的参数设置

名 称 说 明
msoElementChartFloorNone 1200 不显示图表基底
msoElementChartFloorShow 1201 显示图表基底
msoElementChartTitleAboveChart 2 在图表上方显示标题
msoElementChartTitleCenteredOverlay 1 将标题显示为居中覆盖
msoElementChartTitleNone 0 不显示图表标题
msoElementChartWallNone 1100 不显示图表背景墙
msoElementChartWallShow 1101 显示图表背景墙
msoElementDataLabelBestFit 210 使用数据标签最佳位置
msoElementDataLabelBottom 209 在底部显示数据标签
msoElementDataLabelCallout 211 将数据标签显示为标注
msoElementDataLabelCenter 202 居中显示数据标签
msoElementDataLabelInsideBase 204 在底端内侧显示数据标签
msoElementDataLabelInsideEnd 203 在顶端内侧显示数据标签
msoElementDataLabelLeft 206 靠左显示数据标签
msoElementDataLabelNone 200 不显示数据标签
msoElementDataLabelOutSideEnd 205 在顶端外侧显示数据标签
msoElementDataLabelRight 207 靠右显示数据标签
msoElementDataLabelShow 201 显示数据标签
msoElementDataLabelTop 208 在顶部显示数据标签
msoElementDataTableNone 500 不显示模拟运算表
msoElementDataTableShow 501 显示模拟运算表
msoElementDataTableWithLegendKeys 502 显示带图例项标示的模拟运算表
msoElementErrorBarNone 700 不显示误差线
msoElementErrorBarPercentage 702 显示百分比误差线
msoElementErrorBarStandardDeviation 703 显示标准偏差误差线
msoElementErrorBarStandardError 701 显示标准误差线
msoElementLegendBottom 104 在底部显示图例
msoElementLegendLeft 103 在左侧显示图例
msoElementLegendLeftOverlay 106 在左侧叠放图例
msoElementLegendNone 100 不显示图例
msoElementLegendRight 101 在右侧显示图例
msoElementLegendRightOverlay 105 在右侧叠放图例
msoElementLegendTop 102 在顶部显示图例
msoElementLineDropHiLoLine 804 显示垂直线和高/低线
msoElementLineDropLine 801 显示垂直线
msoElementLineHiLoLine 802 显示高/低线
msoElementLineNone 800 不显示线
msoElementLineSeriesLine 803 显示系列线
msoElementPlotAreaNone 1000 不显示绘图区
msoElementPlotAreaShow 1001 显示绘图区

下面选择数据创建图表,显示和设置标题,将标题显示为居中覆盖,显示数据标签,在底部显示图例。

code.python
>>> sht.api.Range("A1:B7").Select()
>>> cht=sht.api.Shapes.AddChart().Chart
>>> cht.HasTitle=True
>>> cht.ChartTitle.Text="这里是图表标题"
>>> cht.SetElement(1)  #将标题显示为居中覆盖
>>> cht.SetElement(201)  #显示数据标签
>>> cht.SetElement(104)  #在底部显示图例

设置效果如图5-23所示。

Document Image

图5-23 设置图表元素

图表区域/绘图区

图表区域是包含整个图表的矩形区域,绘图区则是由两个坐标轴所确定的矩形区域。Excel中用ChartArea对象表示图表区域,用PlotArea表示绘图区。使用Chart对象的ChartArea属性和PlotArea属性获取它们。

连续引用ChartArea对象和PlotArea对象的Format.Fill属性,可以对两个区域中的面进行设置,比如设置它们的颜色、透明度等,或进行渐变色填充、图案填充、图片填充、纹理填充等。这部分的设置方法请参见5.3节内容。

下面选择数据创建图表,获取图表区域并设置其前景色为绿色,添加阴影;获取绘图区域并设置图片填充作为图表的背景,修改图表序列1的前景色为黄色,取消水平网格线的显示。

code.python
>>> sht.api.Range("A1:B7").Select()
>>> cht=sht.api.Shapes.AddChart().Chart
>>> cha=cht.ChartArea  #图表区域
>>> cha.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((155,255,0))
>>> cha.Shadow=True  #显示阴影
>>> pla=cht.PlotArea  #绘图区域
>>> pla.Format.Fill.UserPicture(r"D:\picpy2.jpg")  #图片填充
>>> cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
>>> cht.Axes(2).HasMajorGridlines=False

生成图5-24所示的图表。

Document Image

图5-24 设置图表区域和绘图区

使用ChartArea对象和PlotArea对象的Format.Shadow属性可以对图表区域和绘图区的阴影进行更多设置。Format.Shadow属性返回一个ShadowFormat对象,该对象的主要属性有:

• Visible属性:设置阴影是否可见。

• Blur属性:返回或设置指定底纹的模糊度。

• Transparency属性:返回或设置区域的透明度,取值范围为0.0(不透明)到1.0(清晰)之间。

• OffsetX属性:以磅为单位返回或设置区域阴影的水平偏移量。正偏移值将阴影向右偏移,负偏移值将阴影向左偏移。

• OffsetY属性:以磅为单位返回或设置区域阴影的垂直偏移量。正偏移值将阴影向下偏移,负偏移值将阴影向上偏移。

下面接着上面的代码进行设置。首先取消图表区域的阴影显示,然后用Format.Shadow属性设置绘图区的阴影,显示阴影并设置水平方向和垂直方向的偏移量均为3。

code.python
>>> cha.Shadow=False
>>> pla.Format.Shadow.Visible=True  #绘图区显示阴影
>>> pla.Format.Shadow.OffsetX=3  #阴影的水平偏移
>>> pla.Format.Shadow.OffsetY=3  #阴影的垂向偏移

效果如图5-25所示。

Document Image

图5-25 绘图区的阴影设置

图例

图例用Legend对象表示,使用Chart对象的HasLegend属性设置显示图例,使用Legend属性返回Legend对象。利用Legend对象的属性和方法对图例的外观、字体和位置等进行设置。

使用Legend对象的Format属性返回的ChartFormat对象,可以对图例的背景区域和外框进行属性设置。使用Legend对象的Font属性返回Font对象,设置字体。使用Legend对象的Position属性设置图例的显示位置。Position属性的取值如表5-10中所示。

表5-10 Position属性的取值

名 称 说 明
xlLegendPositionBottom -4107 位于图表下方
xlLegendPositionCorner 2 位于图表边框的右上角
xlLegendPositionCustom -4161 位于自定义的位置上
xlLegendPositionLeft -4131 位于图表的左侧
xlLegendPositionRight -4152 位于图表的右侧
xlLegendPositionTop -4160 位于图表的上方

下面选择数据创建图表,设置图例字体为倾斜,图例背景区域为黄色,外框为兰色,位置为图表下方。

code.python
>>> sht.api.Range("A1:B7").Select()  #数据
>>> cht=sht.api.Shapes.AddChart().Chart  #添加图表
>>> cht.Legend.Font.Italic=True  #图例字体倾斜
>>> cht.Legend.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
>>> cht.Legend.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((0,0,255))
>>> cht.Legend.Position=-4107  #图例位置在图表下方

图例设置效果如图5-26所示。

Document Image

图5-26 设置图例