首页 > Python资料 博客日记
《还在为数据表难看而烦恼?Python绘制数据表能否成为你的救星?》
2025-01-14 02:30:07Python资料围观26次
利用python绘制各种数据图表
绘制柱形图-源码
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# 创建工作薄
wb = Workbook(write_only=True)
# 创建工作表
ws = wb.create_sheet('月收入')
# 准备数据
rows = [
('月份', '销售额'),
(1, 23),
(2, 43),
(3, 56),
(4, 23),
(5, 65),
(6, 54),
(7, 43),
(8, 25),
(9, 53),
(10, 76),
(11, 54),
(12, 54),
]
# 将数据写入到工作表中
for row in rows:
ws.append(row)
# 创建柱形图对象
chart1 = BarChart()
# 设置柱形图类型 type = col 表示垂直柱形图,type = bar 表示水平柱形图
chart1.type = "col"
# 设置图表标题
chart1.title = "月销售额柱形图"
# 设置图表轴标签
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'
# 设置数据范围
data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
# 将数据和类别添加到图表中
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)
# 将图表添加到工作表中
ws.add_chart(chart1, "E5")
# 保存工作薄
wb.save("示例文件\月份销售额.xlsx")
绘制柱形图-源码解析
这段代码使用 openpyxl
库来创建一个 Excel 工作簿,并在其中创建一个包含柱形图的工作表。以下是对代码的详细分析:
1. 导入必要的模块
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
-
Workbook
类用于创建一个新的工作簿。 -
BarChart
类用于创建柱形图。 -
Reference
类用于引用工作表中的数据范围。
2. 创建工作簿和工作表
wb = Workbook(write_only=True)
ws = wb.create_sheet('月收入')
-
Workbook(write_only=True)
创建一个只写模式的工作簿,适用于大数据量的写入操作。 -
create_sheet('月收入')
在工作簿中创建一个名为“月收入”的工作表。
3. 准备数据
rows = [
('月份', '销售额'),
(1, 23),
(2, 43),
(3, 56),
(4, 23),
(5, 65),
(6, 54),
(7, 43),
(8, 25),
(9, 53),
(10, 76),
(11, 54),
(12, 54),
]
-
rows
是一个包含月份和销售额数据的列表。
4. 将数据写入工作表
for row in rows:
ws.append(row)
-
使用
ws.append(row)
将每一行数据追加到工作表中。
5. 创建柱形图对象
chart1 = BarChart()
-
BarChart()
创建一个新的柱形图对象。
6. 设置柱形图类型
chart1.type = "col"
-
type = "col"
表示创建垂直柱形图。
7. 设置图表标题和轴标签
chart1.title = "月销售额柱形图"
chart1.x_axis.title = '月份'
chart1.y_axis.title = '销售额'
-
title
设置图表的标题。 -
x_axis.title
和y_axis.title
分别设置 X 轴和 Y 轴的标签。
8. 设置数据范围
data = Reference(ws, min_col=2, min_row=2, max_row=13, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=13)
-
data
引用工作表中销售额的数据范围(从第2行第2列到第13行第2列)。 -
categories
引用工作表中月份的数据范围(从第2行第1列到第13行第1列)。
9. 将数据和类别添加到图表中
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(categories)
-
add_data(data, titles_from_data=True)
将数据添加到图表中,并从数据中提取标题。 -
set_categories(categories)
设置图表的类别(即 X 轴的数据)。
10. 将图表添加到工作表中
ws.add_chart(chart1, "E5")
-
add_chart(chart1, "E5")
将图表添加到工作表的指定位置(E5 单元格)。
11. 保存工作簿
wb.save("示例文件\月份销售额.xlsx")
-
save("示例文件\月份销售额.xlsx")
将工作簿保存到指定的文件路径。
总结
这段代码通过 openpyxl
库创建了一个包含柱形图的 Excel 工作簿,并将数据写入工作表中。最后,图表被添加到工作表的指定位置,并保存为一个新的 Excel 文件。
绘制折线图-源码
from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 创建工作薄对象
wb = Workbook()
# 选定工作表
ws = wb.active # 使用 active 获取活动工作表
# 准备数据
rows = [
['时间', '服务人数']
]
for i in range(8, 24):
# 将时间对象转换为字符串
time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
rows.append([time_str, randint(0, 200)])
for data in rows:
ws.append(data)
# 创建折线图对象
linechart = LineChart()
# 设置折线图属性
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'
# 设置数据集范围
data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
# 添加数据
linechart.add_data(data, titles_from_data=True)
# 设置x轴显示内容
linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles) # 修正了方法名
# 设置图表的位置
ws.add_chart(linechart, 'A20')
# 保存位置
wb.save('示例文件/折线图.xlsx')
绘制折线图-源码解析
这段代码的目的是使用Python的openpyxl
库来创建一个Excel工作簿,并在其中添加一个折线图,该图表显示了从早上8点到晚上11点每小时的客服服务人数。以下是对代码的详细分析:
导入模块
from random import randint
from datetime import datetime
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
-
randint
用于生成随机数,模拟服务人数。 -
datetime
用于生成时间数据。 -
Workbook
和LineChart
来自openpyxl
,分别用于创建Excel工作簿和折线图。 -
Reference
也来自openpyxl
,用于指定图表的数据范围。
创建工作簿和工作表
wb = Workbook()
ws = wb.active
-
Workbook()
创建一个新的工作簿。 -
wb.active
获取当前活动的工作表。
准备数据
rows = [['时间', '服务人数']]
for i in range(8, 24):
time_str = datetime.combine(datetime.today(), datetime.min.time()).replace(hour=i, minute=0).strftime('%H:%M')
rows.append([time_str, randint(0, 200)])
for data in rows:
ws.append(data)
-
初始化一个包含表头的列表
rows
。 -
使用循环从早上8点到晚上11点生成时间字符串,并为每个小时生成一个0到200之间的随机服务人数。
-
将每行数据添加到工作表中。
创建折线图对象并设置属性
linechart = LineChart()
linechart.title = '当天客服绩效图'
linechart.x_axis.title = '时间'
linechart.y_axis.title = '服务人数'
-
创建一个折线图对象。
-
设置图表的标题和轴标题。
设置数据集范围并添加数据
data = Reference(ws, min_row=2, min_col=2, max_row=ws.max_row)
linechart.add_data(data, titles_from_data=True)
-
使用
Reference
指定服务人数的数据范围(从第二行第二列开始到数据结束)。 -
将数据添加到图表中,并设置
titles_from_data=True
以使用数据中的第一行作为图例。
设置x轴显示内容
linechart.x_axis.number_format = "HH:MM"
x_titles = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
linechart.set_categories(x_titles)
-
设置x轴的时间格式。
-
使用
Reference
指定时间数据范围,并通过set_categories
方法将其设置为x轴的类别。
设置图表位置并保存工作簿
ws.add_chart(linechart, 'A20')
wb.save('示例文件/折线图.xlsx')
-
将图表添加到工作表的指定位置(A20单元格)。
-
保存工作簿到文件。
注意事项
-
确保保存文件的路径('示例文件/折线图.xlsx')是正确的,并且Python脚本有权限写入该路径。
-
如果
openpyxl
库未安装,需要先通过pip install openpyxl
命令安装。
这段代码是一个很好的示例,展示了如何使用Python自动化Excel图表创建过程,适用于数据分析和报告生成。
绘制面积图-源码
from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference
# 创建工作薄
wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数') # 手动创建一个工作表
# 准备数据
rows = [
['序号', '产品A', '产品B'],
[1, 25, 57],
[2, 30, 48],
[3, 40, 45],
[4, 50, 20],
[5, 60, 50]
]
# 将数据写入到工作表中
for row in rows:
ws.append(row)
# 创建面积对象
chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')
绘制面积图-源码解析
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个面积图。下面是代码的详细分析:
导入库
from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference
-
Workbook
类用于创建新的 Excel 工作簿。 -
AreaChart
类用于创建面积图。 -
Reference
类用于定义图表的数据范围。
创建工作簿和工作表
wb = Workbook(write_only=True)
ws = wb.create_sheet('产品参数')
-
Workbook(write_only=True)
:创建一个只能写入的工作簿,适合大数据量的写入操作。 -
create_sheet('产品参数')
:在工作簿中创建一个名为“产品参数”的工作表。
准备数据
rows = [
['序号', '产品A', '产品B'],
[1, 25, 57],
[2, 30, 48],
[3, 40, 45],
[4, 50, 20],
[5, 60, 50]
]
-
这里定义了一个二维数组
rows
,包含了产品的序号以及两个产品(产品A和产品B)在不同月份的利润数据。
将数据写入工作表
for row in rows:
ws.append(row)
-
使用
append
方法将每一行数据添加到工作表中。
创建面积图对象并设置属性
chart = AreaChart()
chart.title = "面积图"
chart.style = 14
chart.x_axis.title = '月份'
chart.y_axis.title = '利润(百万)'
-
创建一个
AreaChart
对象。 -
设置图表的标题、样式、X轴和Y轴的标题。
定义图表的数据范围和类别
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7)
cats = Reference(ws, min_col=1, min_row=1, max_row=7)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
-
Reference
对象用于指定图表的数据范围和类别范围。 -
add_data
方法用于添加数据区域,并设置titles_from_data=True
以使用数据的第一行作为图例。 -
set_categories
方法用于设置 X 轴的类别。
将图表添加到工作表并保存工作簿
ws.add_chart(chart, "A10")
wb.save('示例文件/面积图.xlsx')
-
add_chart
方法将图表添加到工作表的指定位置(A10 单元格)。 -
save
方法用于保存工作簿到指定的文件路径。
总结
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含面积图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个面积图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
绘制雷达图-源码
from openpyxl import Workbook
from openpyxl.chart import RadarChart, Reference
# 创建工作薄
wb = Workbook()
# 选定工作表
ws = wb.active
# 准备数据
rows = [
['Mouth', 'Bulbs', 'Seeds', 'Flowers', 'Trees'],
['Jan', 0, 2200, 500, 0],
['Feb', 0, 2000, 560, 0],
['Mar', 0, 6500, 1230, 0],
['Apr', 0, 4500, 2500, 0],
]
for row in rows:
ws.append(row)
# 创建图表对象
chart = RadarChart()
chart.type = 'filled'
# 设置数据取值范围
data = Reference(ws, min_col=2, min_row=1, max_col=5, max_row=13)
# 设置类别取值范围
lables = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(lables)
chart.style = 26
# 设置图表标题
chart.title = "雷达图"
chart.y_axis.delete = True
# 将图表保存到指定位置
ws.add_chart(chart, 'A17')
# 将图表保存道工作薄中
wb.save('示例文件/雷达图.xlsx')
绘制雷达图-源码解析
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个雷达图。以下是对代码的详细解析:
导入库
from openpyxl import Workbook
from openpyplotlib import RadarChart, Reference
-
Workbook
类用于创建新的 Excel 工作簿。 -
RadarChart
类用于创建雷达图。 -
Reference
类用于定义图表的数据范围和类别范围。
创建工作簿和工作表
wb = Workbook()
ws = wb.active
-
Workbook()
:创建一个新的工作簿。 -
wb.active
:获取当前活动的工作表。
准备数据
rows = [
['Mouth', 'Bulbs', 'Seeds', 'Flowers', 'Trees'],
['Jan', 0, 2200, 500, 0],
['Feb', 0, 2000, 560, 0],
['Mar', 0, 6500, 1230, 0],
['Apr', 0, 4500, 2500, 0],
]
for row in rows:
ws.append(row)
-
定义了一个二维数组
rows
,包含了不同月份(Mouth)和不同类别(Bulbs, Seeds, Flowers, Trees)的数据。 -
使用
append
方法将每一行数据添加到工作表中。
创建雷达图对象并设置属性
chart = RadarChart()
chart.type = 'filled'
data = Reference(ws, min_col=2, min_row=1, max_col=5, max_row=13)
lables = Reference(ws, min_col=1, min_row=2, max_row=13)
chart.add_data(data, titles_from_data=True)
chart.set_categories(lables)
chart.style = 26
-
创建一个
RadarChart
对象。 -
设置图表类型为
'filled'
,表示填充雷达图的区域。 -
使用
Reference
对象定义数据范围和类别范围。 -
add_data
方法用于添加数据区域,并设置titles_from_data=True
以使用数据的第一行作为图例。 -
set_categories
方法用于设置雷达图的类别。 -
设置图表的样式为
26
。
设置图表标题和其他属性
chart.title = "雷达图"
chart.y_axis.delete = True
-
设置图表的标题为 "雷达图"。
-
chart.y_axis.delete = True
删除 Y 轴,因为雷达图通常不需要 Y 轴。
将图表添加到工作表并保存工作簿
ws.add_chart(chart, 'A17')
wb.save('示例文件/雷达图.xlsx')
-
add_chart
方法将图表添加到工作表的指定位置(A17 单元格)。 -
save
方法用于保存工作簿到指定的文件路径。
总结
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含雷达图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个雷达图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
绘制饼图-源码
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
from openpyxl.chart.marker import DataPoint
# 创建工作薄对象
wb = Workbook()
# 选择工作表
ws = wb.active
# 准备数据
rows = [
['品类', '销售额'],
['苹果', 10],
['香蕉', 25],
['榴莲', 25],
['西梅', 40]
]
for row in rows:
ws.append(row)
# 创建饼图对象
pie = PieChart()
# 设置数据范围
data = Reference(ws, min_col=2, min_row=1, max_row=5)
# 设置饼图范围
lables = Reference(ws, min_col=1, min_row=2, max_col=5)
pie.add_data(data, titles_from_data=True)
# 设置lables
pie.set_categories(lables)
# 设置图表标题
pie.title = '各类图表销售额占比'
# 设置饼图分离的效果
slice = DataPoint(idx=0, explosion=20)
pie.series[0].data_points = [slice]
# 将图表添加到指定位置
ws.add_chart(pie, 'D1')
wb.save('示例文件/饼图.xlsx')
绘制饼图-源码解析
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个饼图。以下是对代码的详细解析:
导入库
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
from openpyxl.chart.marker import DataPoint
-
Workbook
类用于创建新的 Excel 工作簿。 -
PieChart
类用于创建饼图。 -
Reference
类用于定义图表的数据范围和类别范围。 -
DataPoint
类用于设置饼图中每个数据点的属性,例如分离效果。
创建工作簿和工作表
wb = Workbook()
ws = wb.active
-
Workbook()
:创建一个新的工作簿。 -
wb.active
:获取当前活动的工作表。
准备数据
rows = [
['品类', '销售额'],
['苹果', 10],
['香蕉', 25],
['榴莲', 25],
['西梅', 40]
]
for row in rows:
ws.append(row)
-
定义了一个二维数组
rows
,包含了不同品类(品类)和对应的销售额(销售额)。 -
使用
append
方法将每一行数据添加到工作表中。
创建饼图对象并设置属性
pie = PieChart()
data = Reference(ws, min_col=2, min_row=1, max_row=5)
lables = Reference(ws, min_col=1, min_row=2, max_col=5)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
pie.title = '各类图表销售额占比'
-
创建一个
PieChart
对象。 -
使用
Reference
对象定义数据范围和类别范围。 -
add_data
方法用于添加数据区域,并设置titles_from_data=True
以使用数据的第一行作为图例。 -
set_categories
方法用于设置饼图的类别。 -
设置图表的标题为 "各类图表销售额占比"。
设置饼图分离效果
slice = DataPoint(idx=0, explosion=20)
pie.series[0].data_points = [slice]
-
创建一个
DataPoint
对象,设置第一个数据点(苹果)的分离效果为 20%。 -
将
DataPoint
对象添加到饼图的第一个系列的数据点中。
将图表添加到工作表并保存工作簿
ws.add_chart(pie, 'D1')
wb.save('示例文件/饼图.xlsx')
-
add_chart
方法将图表添加到工作表的指定位置(D1 单元格)。 -
save
方法用于保存工作簿到指定的文件路径。
总结
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含饼图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个饼图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
绘制3D饼图-源码
from openpyxl import Workbook
from openpyxl.chart import PieChart3D, Reference
# 创建工作薄
wb = Workbook()
# 选中工作表
ws = wb.active
# 准备数据
rows = [
('店铺', '利润'),
('一号店', 120),
('二号店', 80),
('三号店', 160),
('四号店', 50)
]
for row in rows:
ws.append(row)
# 创建图表对象
pie = PieChart3D()
# 选定数据范围
data = Reference(ws, min_col=2, min_row=1, max_row=6)
# 选定类别的范围
lables = Reference(ws, min_col=1, min_row=2, max_row=6)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
# 设置图表标题
pie.title = "3D饼图"
# 将图表添加到指定位置
ws.add_chart(pie, "A10")
# 保存工作薄
wb.save('示例文件/3D饼图.xlsx')
绘制3D饼图-源码解析
这段代码使用 openpyxl
库在 Python 中创建一个 Excel 文件,并在其中插入一个 3D 饼图。以下是对代码的详细解析:
导入库
from openpyxl import Workbook
from openpyxl.chart import PieChart3D, Reference
-
Workbook
类用于创建新的 Excel 工作簿。 -
PieChart3D
类用于创建 3D 饼图。 -
Reference
类用于定义图表的数据范围和类别范围。
创建工作簿和工作表
wb = Workbook()
ws = wb.active
-
Workbook()
:创建一个新的工作簿。 -
wb.active
:获取当前活动的工作表。
准备数据
rows = [
('店铺', '利润'),
('一号店', 120),
('二号店', 80),
('三号店', 160),
('四号店', 50)
]
for row in rows:
ws.append(row)
-
定义了一个二维数组
rows
,包含了不同店铺(店铺)和对应的利润(利润)。 -
使用
append
方法将每一行数据添加到工作表中。
创建 3D 饼图对象并设置属性
pie = PieChart3D()
data = Reference(ws, min_col=2, min_row=1, max_row=6)
lables = Reference(ws, min_col=1, min_row=2, max_row=6)
pie.add_data(data, titles_from_data=True)
pie.set_categories(lables)
pie.title = "3D饼图"
-
创建一个
PieChart3D
对象。 -
使用
Reference
对象定义数据范围和类别范围。 -
add_data
方法用于添加数据区域,并设置titles_from_data=True
以使用数据的第一行作为图例。 -
set_categories
方法用于设置饼图的类别。 -
设置图表的标题为 "3D饼图"。
将图表添加到工作表并保存工作簿
ws.add_chart(pie, "A10")
wb.save('示例文件/3D饼图.xlsx')
-
add_chart
方法将图表添加到工作表的指定位置(A10 单元格)。 -
save
方法用于保存工作簿到指定的文件路径。
总结
这段代码演示了如何使用 openpyxl
库在 Python 中创建一个包含 3D 饼图的 Excel 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个 3D 饼图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。
标签:
相关文章
最新发布
- 【Python】解决Python报错:AttributeError: ‘function‘ object has no attribute ‘xxx‘
- Windows配置pip安装llama-cpp-python出现错误问题
- 【Python】多人聊天室案例、生成器和迭代器
- Python KeyError 异常及其解决方法
- python 打包exe文件包
- 华为OD机试E卷 --计算疫情扩散时间--24年OD统一考试(Java & JS & Python & C & C++)
- 100 个 Python 小例子(练习题)
- python-kaggle商场顾客细分数据分析
- python 实现信号高通、低通、带通滤波处理代码,并画出滤波后的时域频域图
- 【实战】Python+OpenCV车道线检测识别项目:实现L2级别自动驾驶必备(配套课程+平台实践)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程