当前位置: 首页 > news >正文

基于python绘制数据表(上)

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

相关文章:

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …...

【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章

文章目录 线性代数入门:机器学习零基础小白指南前言一、向量:数据的基本单元1.1 什么是向量?1.1.1 举个例子: 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…...

Python PPT合并与拆分 – 详解

目录 使用工具 Python 合并 PPT 合并多个PPT文档 合并每个PPT文档中的特定幻灯片 Python 拆分 PPT 按幻灯片数量拆分 按幻灯片范围拆分 按幻灯片内容拆分 按节 (Section) 拆分 在日常工作或学习中,我们经常需要对PPT文件进行调整,比如将多个PPT…...

舌头分割数据集labelme格式2557张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2557 标注数量(json文件个数):2557 标注类别数:1 标注类别名称:["tongue"] 每个类别标注的框数&#xff1…...

LVS能否实现两台服务器的负载均衡

LVS能否实现两台服务器的负载均衡 是的,LVS(Linux Virtual Server)可以实现两台服务器的负载均衡,并且它非常适合这种场景。 LVS(Linux Virtual Server)简介: LVS 是一种基于 Linux 的负载均…...

onlyoffice 容器配置修改后制作镜像导出以及上传到 dockerhub

1.将容器制作成新的镜像 docker commit -p -a "xxx" -m "zh-cn-20-100" onlyoffice ooffice:7.1.1.23docker commit: 这是 Docker 中用于创建新镜像的命令。 -p: 这个选项用于在提交之前暂停容器的运行。这可以确保数据的完整性,因为容器在提交…...

Java常用 Date 时间格式化、Calender日历、正则表达式的用法

目录 1. SimpleDateFormat 日期格式化类 1.1 Date 类型转 String 1.2 String 类型转 Date 2. Calendar 日历类 3. 正则表达式 3.1 正则表达式的组成部分 3.2 手机号正则表达式 3.3 常用密码校验正则表达式 1. SimpleDateFormat 日期格式化类 SimpleDateFormat 是Java中…...

案例讲解自然语言处理(NLP)

自然语言处理(NLP)是一种涉及计算机与人类自然语言之间的交互的技术。以下是一些NLP技术的示例: 语言翻译:NLP可以用于将一种语言翻译成另一种语言。Google翻译就是一个使用NLP技术的例子,它可以将输入的文本从一种语言…...

tryhackme——Pre Security(安检前)-Offensive Security(进攻性安全)

这里我用的edge的插件闪击翻译。这里我英语不好,所以用这个可以顺便学习下英语。 任务一:What is Offensive Security?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…...

2.python变量

理解,我将提供更详细和深入的解释,包括一些进阶概念和实际应用的例子。我们将从变量类型开始,逐步深入到每种数据类型的特性、操作方法以及它们在编程中的应用场景。 文章目录 1. 变量赋值与作用域变量赋值变量作用域 2. 标准数据类型Number…...

【工业机器视觉】基于深度学习的水表盘读数识别(4-训练与预测)

【工业机器视觉】基于深度学习的仪表盘识读(读数识别)(3)-CSDN博客 训练与预测 Ultralytics YOLO指的是由Ultralytics公司开发的一系列基于YOLO(You Only Look Once)架构的目标检测算法。YOLO是一种实时目标检测系统,它…...

opencv获取摄像头的最大分辨率图像

事情是这样的,在拼多多花了40买了一个4k高清的摄像偷,确实清楚。但是我一直以为网络摄像头分辨率只有640*480,于是用python测试了一下,上代码 import cv2def get_max_resolution(camera_index):"""获取摄像头的最大分辨率。&…...

23.DDD与微服务

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 DDD与微服务的关系1. DDD可以用微服务实现,也可以不用微服务实现2. DDD是微服务拆分的必须参考项之一3. 微服务架构…...

Redis是什么?Redis和MongoDB的区别在那里?

Redis介绍 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是关于Redis的详细介绍: 一、数据结构支持 字符串(String) 这是Redis最…...

git SSL certificate problem: unable to get local issuer certificate

Git 客户端将会验证服务器端提供的SSL证书是否由受信任的证书颁发机构(Certification Authority,CA)签发。如果Git客户端无法找到或验证本地签发者证书,就会出现 unable to get local issuer certificate 或类似的错误。 该问题一…...

使用Keil V6编译 FreeRTOS CMSIS V2版本 ETH + Lwip 编译报错问题解决方式

网上其他人写的都解决不了,要不用的是CMSIS V1版本,根据他们的方式搞完还是报错,今天花点时间自己搞一下。 不想自己动手?没问题,模版已上传Gitee https://gitee.com/maybe_404/stm32-f4xx_-free-rtos_-lwip_-templa…...

驱动开发系列30 - Linux Graphics DRM光标绘制分析

一:概述 本文分析了 Linux 直接渲染管理器 (DRM) 绘制光标的过程,目的是将 OpenGL 与 DRM 连接,弄清楚整个调用逻辑。本文将详细描述这一过程,介绍如何在图形软件栈中实现光标渲染。整体软件栈的架构图也将展示其中的各个组成部分及其相互关系。 二:代码介绍 drm-cursor …...

如何利用Java爬虫获得淘宝买家秀

在电商平台上,买家秀数据是商家了解消费者反馈、优化产品和服务的重要资源。本文将详细介绍如何利用Java爬虫技术获取淘宝商品的买家秀信息,并提供一个完整的代码示例。 一、淘宝买家秀数据的重要性 买家秀数据包括买家上传的图片、视频、评论等内容&a…...

【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

第一章、以问题导入的方式,深入掌握原理基础【理论篇】 1、R语言入门: (1)安装R及集成开发环境(IDE);(2)R语言基础语法与数据结构,包括:程序包安…...

虚幻引擎C++按键绑定

在项目的 Project Settings -> Engine -> Input 中进行配置。 配置输入映射的步骤: 打开 Project Settings: 在 Unreal Editor 中,点击菜单栏的 Edit -> Project Settings。 导航到 Input: 在 Project Settings 窗口的左侧导航栏中&#xff0…...

H5与原生App高效通信:DSBridge桥方法实战解析

1. 为什么需要DSBridge? 在混合开发中,H5页面经常需要调用摄像头、地理位置等原生功能,而原生App也需要获取H5页面的数据更新。传统通信方式(如URL Scheme拦截)存在三个痛点:协议维护成本高(需…...

丁二酸酯PEG氨基叔丁氧羰基,NHBoc-PEG-SA,可与胺基、羟基等基团发生缩合反应

一.名称英文名称:SA-PEG-NHBoc,Succinic Acid-PEG-NHBoc,NHBoc-PEG-SA,NHBoc-PEG-Succinic Acid中文名称:丁二酸酯聚乙二醇氨基叔丁氧羰基,丁二酸酯PEG氨基叔丁氧羰基分子量:1k,2k&a…...

KEIL MDK实战:3分钟将常用C文件封装成LIB库(附标准库管理技巧)

KEIL MDK高效工程管理:C文件封装LIB库的进阶实践 在嵌入式开发领域,随着项目规模扩大,工程文件管理往往成为影响开发效率的关键瓶颈。特别是对于STM32开发者而言,标准外设库、常用算法模块等重复使用的代码如何高效管理&#xff0…...

如何零门槛构建企业级智能Agent?AI应用开发全攻略

如何零门槛构建企业级智能Agent?AI应用开发全攻略 【免费下载链接】fast-agent Code, Build and Evaluate agents - excellent Model and Skills/MCP/ACP Support 项目地址: https://gitcode.com/gh_mirrors/fa/fast-agent 在AI技术迅猛发展的今天&#xff0…...

华为2288H V3服务器iBMC配置全攻略:从默认密码到ESXi安装一步到位

华为2288H V3服务器iBMC与ESXi部署实战指南 对于企业IT基础设施团队而言,华为2288H V3服务器的灵活配置与高效管理能力使其成为数据中心建设的理想选择。本文将深入解析从基础配置到虚拟化平台部署的全流程,特别针对iBMC智能管理系统和VMware ESXi安装提…...

Whitlow/218 Linker如何革新抗体药物开发中的稳定性与生产难题?

一、抗体工程领域面临何种关键性技术瓶颈?抗体药物作为生物制药领域最具前景的治疗方向之一,在肿瘤、自身免疫疾病和传染病等重大疾病治疗中展现出卓越疗效。然而,在抗体药物研发过程中,两个关键技术难题始终制约着其进一步发展&a…...

禅道16.4开源版二次开发实战:手把手教你给测试用例新增“测试方式”字段(附完整代码)

禅道16.4开源版二次开发实战:从零构建测试方式字段全流程指南 当测试团队同时管理手工与自动化用例时,原生禅道系统缺少测试类型标识字段的问题会直接导致统计混乱。上周我接手的一个金融项目就遇到这种情况——自动化测试报告总是混入手工用例数据。经过…...

关于2026年6月14日PMI认证考试的报名通知

尊敬的各位考生: 经PMI和中国国际人才交流基金会研究决定,中国大陆地区2026年第二期PMI认证考试6月14日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。 一、 报名注…...

编译原理不再难:借助快马AI生成交互式示例,轻松入门语法分析

编译原理不再难:借助快马AI生成交互式示例,轻松入门语法分析 刚开始学习编译原理时,最让我头疼的就是语法分析这部分。那些抽象的文法规则、递归下降、LL(1)分析等概念,光看理论总觉得云里雾里。直到我尝试用InsCode(快马)平台做…...

5分钟掌握B站评论区智能成分检测:免费高效的互动神器

5分钟掌握B站评论区智能成分检测:免费高效的互动神器 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker B站成…...