坐标系的特殊设置

坐标系的特殊设置包括多轴图和对数坐标图等。[大谦Excel,dqexcel点com]

双轴图

双轴图是一种组合图,它将两个图表组合显示在一幅图中。这两个图表使用共同的横轴和不同的纵轴。

使用API使用方式,通过Chart对象获取Axis对象的语法格式为:

code.python
axs=cht.Axes(Type,AxisGroup)

其中,cht为Chart对象。Type参数表示坐标轴的类型,值取1时表示分类轴,值为2时为数值轴。AxisGroup参数的值为1时表示坐标轴为主轴,为2时坐标轴为辅轴。默认时,主轴显示在左侧,辅轴显示在右侧。这样就可以生成双轴图,即绘图区两个图叠加显示,使用相同的横轴不同的纵轴。

下面创建柱状图和线形图组成的双轴图,柱状图使用纵轴主轴,线形图使用纵轴辅轴。完整代码见:Samples->ch03图表基础->21 坐标系:多轴图->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:B7').Select()    #数据
cht=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,\
                        20,20,350,200,True).Chart    #创建图表
cht.SeriesCollection(1).AxisGroup=1    #序列1使用主轴
cht.SeriesCollection(2).AxisGroup=2    #序列2使用辅轴
cht.SeriesCollection(2).ChartType=xw.constants.ChartType.xlLine    #图表类型
cht.SeriesCollection(2).MarkerStyle=xw.constants.MarkerStyle.xlMarkerStyleTriangle    #点标记
cht.SeriesCollection(2).MarkerForegroundColor=xw.utils.rgb_to_int((0,0,255))    #点标记的前景色
cht.SeriesCollection(2).MarkerSize=8    #点标记的大小
cht.SeriesCollection(2).HasDataLabels=True    #序列2显示数据标签
cht.SeriesCollection(1).HasDataLabels=True    #序列1显示数据标签
axs1=cht.Axes(2,1)    #左纵轴
axs1.MinimumScale=0    #左纵轴最小值
axs1.MaximumScale=60    #左纵轴最大值
axs1.HasTitle=True    #添加图表标题
axs1.AxisTitle.Text='纵坐标轴1'    #坐标轴标题
axs2=cht.Axes(2,2)    #右纵轴
axs2.MinimumScale=10
axs2.MaximumScale=160
axs2.HasTitle=True
axs2.AxisTitle.Text='纵坐标轴2'

cht.ChartTitle.Caption='双轴图'

运行代码,生成双轴图如图2-13所示。图中,柱状图使用左侧的纵坐标轴,折线图使用右侧的纵坐标轴。

Document Image

图2-13 双轴图

对数坐标图

默认时,坐标系中坐标轴的刻度线等间隔排列,对应的值是等差数列的关系。如果值是等比数列的关系,就要用到对数坐标。对数坐标图中,单个坐标轴或两个坐标轴的刻度间隔取对数间隔。如果只有单个坐标轴的刻度线取对数间隔,称为X对数坐标图或Y对数坐标图;如果两个坐标轴的刻度线取对数间隔,称为双对数坐标图。

Axis对象的ScaleType属性返回或设置数值轴的刻度类型,取值如表2-3所示。坐标轴的ScaleType属性的值设置为xw.constants.ScaleType.xlScaleLogarithmic时该轴刻度线为对数间隔,据此可绘制对数坐标图。

表2-3 ScaleType属性的取值

名 称 值 说 明
xlScaleLinear -4132 线性刻度
xlScaleLogarithmic -4133 对数刻度

下面创建图表,将纵轴对象的ScaleType属性设置为xw.constants.ScaleType.xlScaleLogarithmic,创建对数坐标图。显示水平方向的网格线。完整代码见:Samples->ch03图表基础->22 坐标系:对数坐标->py.py。

code.python
#... 省略部分代码
sht.api.Range('A1:B7').Select()    #数据
cht=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,\
                        20,20,350,250,True).Chart    #创建图表
cht.Axes(2).ScaleType=xw.constants.ScaleType.xlScaleLogarithmic    #对数坐标
cht.Axes(2).HasMinorGridlines=True    #显示纵轴次网格线

运行代码,生成图表如图2-14所示。

Document Image

图2-14 对数坐标图