分享

使用 Python 代码结合 VBA创建线柱组合图表

 hercules028 2024-01-03 发布于四川

使用 Python 代码结合 VBA 除了能创建基础图表外,还可以创建组合图表,如线柱组合图。

下面以图 9-4 所示的数据源为例,介绍如何通过代码在 D7 单元格位置创建宽 450 磅、高 300 磅的线柱组合图表。 
ImageImage

Image

代码解析
第 1 行代码导入 os 库,用于后续处理路径。
第 2 行代码导入 xlwings 库,并起别名为 xw。
第 3~4 行代码从 xlwings 库中导入常量 AxisType 和 AxisGroup,用于后续设置图表上的坐标轴属性;导入常量 ChartType,用于后续设置图表类型;导入常量 MarkerStyle,用于后续设置数据系列的数据标志样式。
第 6 行代码使用 os.path 模块的 dirname 函数获取 Python 文件所在目录,其中 __file__ 属性返回Python 文件的全路径。
第 7 行代码使用 os.path 模块的 join 函数拼接目录名和文件名获取示例 Excel 文件的全路径。
第 8 行代码使用 xw.Book 打开示例 Excel 文件获取工作簿对象,并赋值给变量 wb。
第 9 行代码使用工作簿对象 wb 的 sheets 属性获取名为“Sheet1”的工作表,并赋值给变量sheet。
第 10 行代码获取 D7 单元格,用来作为图表的锚点。
第 11 行代码中的 sheet.charts 返回 Charts 对象,调用该对象的 add 方法在当前工作表中添加图表,并返回 Chart 对象赋值给变量 chart。该图表的左上角坐标点即为 D1 单元格的坐标,宽和长分别为 450和 300。
第 12 行代码指定工作表的 A1:C6 单元格区域作为图表数据源。
第 13 行代码设置图表类型为簇状柱形图。
第 14 行代码获取 VBA Chart 对象,由于 xlwings 提供的 Chart 对象不支持设置数值轴、数据系列等,需要借助 VBA 的能力来实现。
第 15~16 行代码设置图表有可见标题和标题文本。
第 17~23 行代码设置主数值轴相关属性。
第 17~18 行代码引用 VBA Chart 对象的主数值轴,其 Axes 方法返回代表图表上单个坐标轴或坐标轴集合的对象,语法格式如下。 

Image

Image

 
第 19~20 行代码设置数值轴的最大值和最小值分别为 1000 和 0。
第 21 行代码设置数值轴的刻度单位为 100。
第 22~23 行代码设置显示坐标轴标题及设置标题文本。
第 24 行代码引用 VBA Chart 对象的第 2 个数据系列,其 SeriesCollection 方法返回图表中指定索引的数据系列 SeriesCollection 对象,语法格式如下。 

Image

参数 Index 是可选的,用于指定数据系列的名称或索引。
第 25 行代码设置数据系列的图表类型为带数据标识的折线图。
第 26 行代码设置数据系列的 AxisGroup 属性为 AxisGroup.xlSecondary,表示将数据系列绘制在次坐标轴上。AxisGroup 属性值可为表 9-5 列举的 AxisGroup 常量之一。
第 27 行代码设置数据系列的 MarkerStyle 属性为 MarkerStyle.xlMarkerStyleCircle,表示将数据系列的数据标志样式设置为圆形标记。MarkerSytle 属性可使用表 9-6 列举的 MarkerStyle 常量。 

Image

第 28 行代码设置数据标志的大小为 5,单位为磅。MarkerSize 属性的取值范围为 2~72 的整数。
第 29~34 行代码设置次数值轴相关属性。
第 29~30 行代码引用 VBA Chart 对象的次数值轴。
第 31~32 行代码设置数值轴的最大值和最小值分别为 1 和 0。
第 33~34 行代码设置显示坐标轴标题及设置标题文本。
第 35~36 行使用 VBA Chart 对象的 SetElement 方法设置图表中的图表元素,该方法可以完成Excel 中【布局】选项卡的部分功能。SetElement 方法的语法格式如下。 

Image

Image

好书推荐

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多