本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!