说说如何使用 openpyxl 生成 Excel 面积图
发布日期:2021-06-29 21:01:46 浏览次数:2 分类:技术文章

本文共 2303 字,大约阅读时间需要 7 分钟。

面积图可以强调数量随着时间发生变化的程度,还可以引起人们对总值趋势的关注。例如,表示随时间而变化的销售数据就可以用面积图来表示,用来强调销售额。

1 2D 面积图

'''2D 面积图@author Deniro Li'''from openpyxl import Workbookfrom openpyxl.chart import AreaChart, Referencefrom random import randintwb = Workbook()ws = wb.active# 随机生成销售额数据rows = [    ['1 月', '北京', '上海'],]for i in range(2, 14):    rows.append([str(i) + ' 月', randint(10, 90), randint(5, 50)])for row in rows:    ws.append(row)# 初始化 AreaChart 对象chart = AreaChart()chart.title = "区域销售额"chart.style = 10chart.x_axis.title = '2019 年'chart.y_axis.title = '单位(百万)'# 计算类别与数据的最大行数max_row = len(rows)# 计算数据的最大列数max_col = len(rows[1])# 类别对象cats = Reference(ws, min_col=1, min_row=1, max_row=max_row)chart.set_categories(cats)# 数据对象data = Reference(ws, min_col=2, min_row=1, max_col=max_col, max_row=max_row)chart.add_data(data, titles_from_data=True)# 放入 Workbook 对象并指定初始位置ws.add_chart(chart, 'E5')wb.save('area_2d.xlsx')

运行结果:

  • 示例通过随机函数来生成不同区域的销售额数据。
  • 注意: 横坐标是月份,但每一月所对应的数据却在下一行!

(1)新建 AreaChart 对象,并初始化各项参数

可以通过 AreaChart 类来建立 2D 面积图对象。它有以下属性:

属性 说明
title 图标标题
style 图表样式编号
x_axis.title 横坐标标题
y_axis.title 纵坐标标题

其中的样式编号所对应的就是 Excel “设计” 标签所对应的图表样式中的某个样式编号:

(2)新建类别对象

AreaChart#set_categories 方法用于设置类别区域对象(即 Reference 对象),这个示例中的类别区域指的是下图中的绿框处:

(3)新建数据对象

AreaChart#add_data 方法用于设置数据区域对象(即 Reference 对象),这个示例中的数据区域指的是下图中的黑框处:

注意: 因为第 13 行第 A 列的值没有用到,所以真实使用时,可以不必填值。

AreaChart#add_data 方法有一个 titles_from_data 属性,表示是否从类别对象获取名称。在本示例中,即是“北京”与“上海”:

(4)放入 Workbook 对象并指定初始位置

Workbook#add_chart 的第二个属性即表示图标在 Excel 左上角初始位置。

2 3D 面积图

我们也可以把刚才的示例转化为 3D 形式。核心代码如下:

...from openpyxl.chart import AreaChart3D...# 初始化 AreaChart3D 对象chart=AreaChart3D()chart.style=10chart.x_axis.title = '2019 年'chart.y_axis.title = '单位(百万)'chart.legend=Nonechart.height=10chart.width=30# 类别对象cats = Reference(ws, min_col=1, min_row=1, max_row=max_row)chart.set_categories(cats)# 数据对象data = Reference(ws, min_col=2, min_row=1, max_col=max_col, max_row=max_row)chart.add_data(data, titles_from_data=True)# 放入 Workbook 对象并指定初始位置ws.add_chart(chart, 'E5')...

运行结果:

  • 生成步骤与 2D 面积图类似,也是初始化面积图对象、类别对象以及数据对象,最后放入 Workbook 对象并指定初始位置。
  • 示例中的不同点在于,我们为 AreaChart3D 多设置了一些属性。
属性 说明
legend 图表颜色区域说明。在本示例中指的就是区域,即 “北京”、“上海”。因为已经是三维图了,所以这里没必要再重复展示(设置为 None)。
height 图表高度,默认为 7.5cm。
width 图标宽度,默认为 15cm。

本示例中,将其设置的更大一些。

生成的 3D 图表可能显示的不完全,有的数据被遮挡住了,这时,可以利用 Excel 的三维旋转功能,让图表按照我们所希望的角度进行展示:

转载地址:https://deniro.blog.csdn.net/article/details/100849767 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说 Spring Boot 的核心概念
下一篇:说说如何使用 openpyxl 冻结 Excel 窗格

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 13时27分01秒