📌  相关文章
📜  Python | 使用openpyxl模块在Excel工作表中绘制图表 1

📅  最后修改于: 2020-04-11 06:28:42             🧑  作者: Mango

先决条件:使用openpyxl excel工作表 读取写入
Openpyxl是一个Python库,使用它可以对excel文件执行多项操作,例如读取,编写,算术运算和绘制图形。让我们看看如何使用实时数据绘制不同的图表。
图表由至少一个系列的一个或多个数据点组成。系列本身由对单元格范围的引用组成。
为了在Excel工作表上绘制图表,首先,创建特定图表类(即BarChart,LineChart等)的图表对象。创建图表对象后,在其中插入数据,最后,将该图表对象添加到图纸对象中。
代码#1:绘制条形图
要在excel工作表上绘制条形图,请使用BarChart classopenpyxl.chart子模块。

# 导入openpyxl模块
import openpyxl
# 从openpyxl.chart sub_module导入BarChart类
from openpyxl.chart import BarChart,Reference
# 调用openpyxl的Workbook()函数以创建一个新的空白Workbook对象
wb = openpyxl.Workbook()
# 从active属性获取工作簿活动表.
sheet = wb.active
# 在活动工作表的第一列中将0写入9
for i in range(10):
    sheet.append([i])
# 创建绘图数据
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建BarChart类的对象
chart = BarChart()
# 向条形图对象添加数据
chart.add_data(values)
# 设置图表标题
chart.title = " BAR-CHART "
# 设置x轴的标题
chart.x_axis.title = " X_AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y_AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上 .
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("barChart.xlsx")

输出:


代码2:绘制3D条形图
要在Excel工作表上绘制3D条形图,请使用BarChart3D classopenpyxl.chart子模块。

# 导入openpyxl模块
import openpyxl
# 从openpyxl.chart sub_module导入BarChart3D类
from openpyxl.chart import BarChart3D,Reference
# 在活动工作表的第一列中写入0到9
for i in range(10):
    sheet.append([i])
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建BarChart3D类的对象
chart = BarChart3D()
chart.add_data(values)
# 设置图表标题
chart.title = " BAR-CHART3D "
# 设置x轴的标题
chart.x_axis.title = " X AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上.
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("BarChart3D.xlsx")

输出:


代码3:绘制面积图
要在Excel工作表上绘制面积图,请使用AreaChart classopenpyxl.chart子模块。

import openpyxl
# 从openpyxl.chart sub_module导入AreaChart类
from openpyxl.chart import AreaChart,Reference
wb = openpyxl.Workbook()
sheet = wb.active
# 在活动工作表的第一列中写入0到9
for i in range(10):
    sheet.append([i])
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建AreaChart类的对象
chart = AreaChart()
chart.add_data(values)
# 设置图表标题
chart.title = " AREA-CHART "
# 设置x轴的标题
chart.x_axis.title = " X-AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y-AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上 .
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("AreaChart.xlsx")

输出:


代码4:绘制3D区域图
要在Excel工作表上绘制3D面积图,请使用AreaChart3D classopenpyxl.chart子模块。

import openpyxl
# 从openpyxl.chart sub_module导入AreaChart3D类
from openpyxl.chart import AreaChart3D,Reference
wb = openpyxl.Workbook()
sheet = wb.active
# 在活动工作表的第一列中将o写入9
for i in range(10):
    sheet.append([i])
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建AreaChart3D类的对象
chart = AreaChart3D()
chart.add_data(values)
# 设置图表标题
chart.title = " AREA-CHART3D "
# 设置x轴的标题
chart.x_axis.title = " X-AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y-AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上.
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("AreaChart3D.xlsx")

输出:


代码5:绘制折线图。
要在Excel工作表上绘制折线图,​​请使用LineChart classopenpyxl.chart子模块。

# 导入openpyxl模块
import openpyxl
# 从openpyxl.chart sub_module导入LineChart类
from openpyxl.chart import LineChart,Reference
wb = openpyxl.Workbook()
sheet = wb.active
# 在活动工作表的第一列中将o写入9
for i in range(10):
    sheet.append([i])
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建LineChart类的对象
chart = LineChart()
chart.add_data(values)
# 设置图表标题
chart.title = " LINE-CHART "
# 设置x轴的标题
chart.x_axis.title = " X-AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y-AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上 .
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("LineChart.xlsx")

输出:



代码6:绘制3D折线图。
为了在Excel工作表上绘制3D折线图,我们必须使用LineChart3D classopenpyxl.chart子模块。

import openpyxl
# 从openpyxl.chart sub_module导入LineChart3D类
from openpyxl.chart import LineChart3D,Reference
wb = openpyxl.Workbook()
sheet = wb.active
# 在活动工作表的第一列中写入0到9
for i in range(10):
    sheet.append([i])
values = Reference(sheet, min_col = 1, min_row = 1,
                         max_col = 1, max_row = 10)
# 创建LineChart3D类的对象
chart = LineChart3D()
chart.add_data(values)
# 设置图表标题
chart.title = " LINE-CHART3D "
# 设置x轴的标题
chart.x_axis.title = " X-AXIS "
# 设置y轴的标题
chart.y_axis.title = " Y-AXIS "
# 将图表添加到工作表
# 图表的左上角固定在单元格E2上.
sheet.add_chart(chart, "E2")
# 保存文件
wb.save("LineChart3D.xlsx")

输出: