【运营的Python指南】Python Excel 绘制柱形图¶
更新日期 2019-11-19
- 2019-11-19 创建文档
这是一份写给运营人员的Python指南。本文主要讲述如何使用Python操作Excel绘制柱形图。
开发工具,环境
- PyCharm
- Python3
- Office Excel
前面我们已经创建好了一张Excel表。 现在我们要根据已有的数据,往里面添加柱形图。
柱形图 BarChart¶
参考《Python openpyxl Excel绘制柱形图》得知,我们主要使用BarChart
与BarChart3D
类。
图表中许多的细节由BarChart属性控制。
后文都以chart1来表示柱形图对象 chart1 = BarChart()
。
数据来源范围 Reference¶
首先我们应该确定数据的范围。有数据才好绘图。这里使用的是Reference
类来表示数据“引用”范围。
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
titles_from_data=True
设置种类使用set_categories
方法,也是把一个范围(Reference)的数据传入。
柱子方向控制 type¶
方向由属性type
来控制,有2个可选参数:bar
表示横向,col
表示竖直。
标题 title¶
属性title控制标题。如果置为None则不显示标题。
图表的标题 chart1.title = "日均值对比"
坐标的标题,首先需要拿到x,y的坐标。
添加图表¶
add_chart将图表添加到sheet中。图表的左上角对齐某个单元格。下面是对齐A8。
3D柱形图 BarChart3D¶
柱子的形状 shape¶
默认是立方体,但也可以从下面的形状里选一个。
{'box', 'pyramid', 'pyramidToMax', 'coneToMax', 'cone', 'cylinder'}
box 是立方体,中规中矩。 pyramid 是金字塔,顶部也是尖的。 cone 是圆锥,看起来很尖锐。 cylinder 是圆柱。
配色风格 style¶
style 会影响图表的配色风格,一般用10比较多彩多样。
代码示例¶
绘制图表用的数据来自运营的Python指南 - Python 操作Excel。 我们在已有的表格中添加柱形图。代码参考python-playground - Github
绘制2D柱形图¶
def create_bar_chart_1(file_path):
"""
插入柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
chart1 = BarChart()
chart1.type = "col"
chart1.style = 9
chart1.title = "日均值对比"
# chart1.y_axis.title = '数值'
chart1.x_axis.title = st.cell(column=1, row=1).value
chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
chart1.shape = 0
st.add_chart(chart1, 'A8')
wb.save(file_path)
绘制3D柱形图¶
def create_bar_chart_2(file_path):
"""
插入3D柱形图
:param file_path: Excel 文件路径
:return: None
"""
wb = load_workbook(file_path)
st = wb.active
data1 = Reference(st, min_col=2, min_row=1, max_row=7, max_col=3)
cats1 = Reference(st, min_col=1, min_row=2, max_row=7)
chart1 = BarChart3D()
chart1.type = "bar"
chart1.style = 10
chart1.title = "日均值对比"
chart1.x_axis.title = None
chart1.shape = 'cylinder'
chart1.add_data(data1, titles_from_data=True)
chart1.set_categories(cats1)
st.add_chart(chart1, 'A26')
wb.save(file_path)
运行结果示例图片
相关代码请参考python-playground - github
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~