基于python绘制数据表(上)

news/2024/12/19 1:49:02/

利用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.titley_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 用于生成时间数据。

  • WorkbookLineChart 来自 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 文件。它首先创建了一个工作簿和工作表,然后准备了数据并将其写入工作表。接着,它创建了一个面积图对象,设置了图表的属性和数据范围,并将图表添加到工作表中。最后,它保存了工作簿到一个文件。


http://www.ppmy.cn/news/1556265.html

相关文章

ESP32-S3模组上跑通ES8388(30)

接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs) GaLore和Q-GaLore的设计背景、工作原理及其优势 设计背景 随着大型语言模型(LLMs)的发展,模型的规模和复杂性不断…

MySQL 8.0与PostgreSQL 15.8的性能对比

以下是MySQL 8.0与PostgreSQL 15.8的性能对比: MySQL 8.0性能特点: MySQL在处理大量读操作时表现出色,其存储引擎InnoDB提供了行级锁定和高效的事务处理,适用于并发读取的场景。MySQL通过查询缓存来提高读取性能,查询缓…

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架 Pytest BDD vs Behave:选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave:关键区别Pytest BDD vs Behave:最佳应用场景结…

Cesium 无人机航线规划(航点航线)

航线规划实现定制航线,一键巡检功能 小镜头模拟的是此方向的拍照效果,觉得合适可以打个拍照印记 设置里可调控参数 保存后反显的样子,主要是为了区分航线

构建虚幻引擎中的HUD与UI

在游戏开发中,用户界面(UI)和头部显示(HUD)是玩家体验的重要组成部分。它们提供了关键信息,并增强了游戏的互动性。虚幻引擎(Unreal Engine, UE)以其强大的可视化脚本系统Blueprint和C++ API支持,为开发者提供了一个灵活且功能丰富的环境来创建复杂的UI和HUD元素。 本…

[C++]类的继承

一、什么是继承 1.定义: 在 C 中,继承是一种机制,允许一个类(派生类)继承另一个类(基类)的成员(数据和函数)。继承使得派生类能够直接访问基类的公有和保护成员&#xf…

论文翻译 | ChunkRAG: Novel LLM-Chunk Filtering Method for RAG Systems

摘要 使用大型语言模型(LLM)的检索-增强生成(RAG)系统经常由于检索不相关或松散相关的信息而生成不准确的响应。现有的在文档级别操作的方法无法有效地过滤掉此类内容。我们提出了LLM驱动的块过滤,ChunkRAG&#xff0…