百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python对于Excel的一些基本绘制图标操作,让你日常工作更加轻松

off999 2024-10-02 18:43 30 浏览 0 评论

前言

在Python中,我们可以利用第三方库来方便地操作Excel文件。这里使用python-excel.org中提供的openpyxl库,用于读写Excel 2007及以上版本的Excel文件。可以让我们日常工作中对于Excel方面的处理更加的方便

安装

使用pip安装工具来安装openpyxl,安装需要打开系统命令行(win +R)输入CMD

pip install openpyxl

即可安装。

初识操作代码

下面的代码用于创建Excel工作簿并在工作表中写入数据:

运行代码实现效果:

垂直、水平和堆积条形图

注意,下列设置影响不同的图表类型:

  • 通过设置type为col或bar在垂直和水平条形图之间切换

  • 当使用堆积图时,overlap需要被设置成100

  • 如果条形是水平的,那么x和y轴相反

下面的代码用于创建不同型式的条形图:

from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference

wb= Workbook(write_only=True)
ws= wb.create_sheet

rows= [
('Number','Batch 1', 'Batch2'),
(2, 10, 30),
(3, 40, 60),
(4, 50, 70),
(5, 20, 10),
(6, 10, 40),
(7, 50, 30),
]

for row in rows:
ws.append(row)

chart1= BarChart
chart1.type= "col"
chart1.style= 10
chart1.title= "Bar Chart"
chart1.y_axis.title= 'Test number'
chart1.x_axis.title= 'Sample length (mm)'

data= Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
cats= Reference(ws, min_col=1, min_row=2, max_row=7)
chart1.add_data(data,titles_from_data=True)
chart1.set_categories(cats)
chart1.shape= 4
ws.add_chart(chart1,"A10")

from copy import deepcopy

chart2= deepcopy(chart1)
chart2.style= 11
chart2.type= "bar"
chart2.title= "Horizontal Bar Chart"

ws.add_chart(chart2,"G10")

chart3= deepcopy(chart1)
chart3.type= "col"
chart3.style= 12
chart3.grouping= "stacked"
chart3.overlap= 100
chart3.title= 'Stacked Chart'

ws.add_chart(chart3,"A27")

chart4= deepcopy(chart1)
chart4.type= "bar"
chart4.style= 13
chart4.grouping= "percentStacked"
chart4.overlap= 100
chart4.title= 'Percent Stacked Chart'

ws.add_chart(chart4,"G27")

wb.save("bar.xlsx")

运行效果:

三维条形图

也可以创建三维条形图,代码如下:

from openpyxl import Workbook
from openpyxl.chart import (
Reference,
Series,
BarChart3D,
)

wb= Workbook
ws= wb.active

rows= [
(None, 2013, 2014),
("Apples",5, 4),
("Oranges",6, 2),
("Pears",8, 3)
]

for row in rows:
ws.append(row)

data= Reference(ws, min_col=2, min_row=1, max_col=3, max_row=4)
titles= Reference(ws, min_col=1, min_row=2, max_row=4)
chart= BarChart3D
chart.title= "3D Bar Chart"
chart.add_data(data=data,titles_from_data=True)
chart.set_categories(titles)

ws.add_chart(chart,"A6")
wb.save("bard.xlsx")

效果图:

股价图

不同形式股价图的特定格式选项:

  • 高-低-收盘形式股价图实际上是一个不带线条的折线图,其标记设置为XYZ,并将hiLoLines设置为True。

  • 开盘-高-低-收盘形式股价图就像一个带有标记的高-低-收盘股价图,每个数据点设置为XYZ和upDownLines。

可以通过组合股价图和条形图来添加表示成交量的条形。

基本的代码如下:

from datetime import date
from openpyxl import Workbook

from openpyxl.chart import (
BarChart,
StockChart,
Reference,
Series,
)

from openpyxl.chart.axis import DateAxis,ChartLines
from openpyxl.chart.updown_bars import UpDownBars

wb= Workbook
ws= wb.active

rows= [
['日期','成交量','开盘','高','低','收盘'],
['2018-11-10',20000,26.20,27.20,23.49,25.45,],
['2018-11-11',10000,25.45,25.03,19.55,23.05,],
['2018-11-12',15000,23.05,24.46,20.03,22.42,],
['2018-11-13',2000,22.42,23.97,20.07,21.90,],
['2018-11-14',12000,21.9,23.65,19.50,21.51,],
]

for row in rows:
ws.append(row)

# 高-低-收盘
c1= StockChart
labels= Reference(ws, min_col=1, min_row=2, max_row=6)
data= Reference(ws, min_col=4, max_col=6, min_row=1, max_row=6)
c1.add_data(data,titles_from_data=True)
c1.set_categories(labels)
for s in c1.series:
s.graphicalProperties.line.noFill= True
# 标记收盘
s.marker.symbol= "dot"
s.marker.size= 5
c1.title= "高-低-收盘"
c1.hiLowLines= ChartLines

from openpyxl.chart.data_source import NumData, NumVal
pts= [NumVal(idx=i) for i in range(len(data)- 1)]
cache= NumData(pt=pts)
c1.series[-1].val.numRef.numCache=cache

ws.add_chart(c1, "A10")

# 开盘-高-低-收盘
c2= StockChart
data= Reference(ws, min_col=3, max_col=6, min_row=1, max_row=6)
c2.add_data(data,titles_from_data=True)
c2.set_categories(labels)
for s in c2.series:
s.graphicalProperties.line.noFill= True
c2.hiLowLines= ChartLines
c2.upDownBars= UpDownBars
c2.title= "开盘-高-低-收盘"

c2.series[-1].val.numRef.numCache= cache

ws.add_chart(c2,"G10")

# 创建条形图代表成交量
bar= BarChart
data= Reference(ws, min_col=2, min_row=1, max_row=6)
bar.add_data(data,titles_from_data=True)
bar.set_categories(labels)

from copy import deepcopy

# 成交量-高-低-收盘价
b1= deepcopy(bar)
c3= deepcopy(c1)
c3.y_axis.majorGridlines=None
c3.y_axis.title= "价格"
b1.y_axis.axId= 20
b1.z_axis= c3.y_axis
b1.y_axis.crosses= "max"
b1+= c3

c3.title= "高低收盘成交量"

ws.add_chart(b1,"A27")

# 成交量-开盘-高-低-收盘
b2= deepcopy(bar)
c4= deepcopy(c2)
c4.y_axis.majorGridlines= None
c4.y_axis.title= "价格"
b2.y_axis.axId= 20
b2.z_axis= c4.y_axis
b2.y_axis.crosses= "max"
b2+= c4

ws.add_chart(b2,"G27")
wb.save("stock.xlsx")

实现效果图:

气泡图

气泡图与散点图相似,但使用第三维来决定气泡的大小,可以包括多个系列。

下面的代码创建气泡图:

from openpyxl import Workbook
from openpyxl.chart import Series, Reference, BubbleChart

wb= Workbook
ws= wb.active

rows= [
("Numberof Products", "Sales in USD","Market share"),
(14, 12200, 15),
(20, 60000, 33),
(18, 24400, 10),
(22, 32000, 42),
(),
(12, 8200, 18),
(15, 50000, 30),
(19, 22400, 15),
(25, 25000, 50),
]

for row in rows:
ws.append(row)

chart= BubbleChart
chart.style= 18 #使用预设的样式

# 添加第一个数据系列
xvalues= Reference(ws, min_col=1, min_row=2, max_row=5)
yvalues= Reference(ws, min_col=2, min_row=2, max_row=5)
size= Reference(ws, min_col=3, min_row=2, max_row=5)
series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013")
chart.series.append(series)

# 添加第二个数据系列
xvalues= Reference(ws, min_col=1, min_row=7, max_row=10)
yvalues= Reference(ws, min_col=2, min_row=7, max_row=10)
size= Reference(ws, min_col=3, min_row=7, max_row=10)
series= Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2014")
chart.series.append(series)

# 在以单元格A12开始的单元格中放置图表
ws.add_chart(chart,"A12")
wb.save("bubble.xlsx")

效果图:

以上就是Python关于Excel的一些基本操作,当然了,Python对于Excel方面的操作肯定不止于此。未完待续.................

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

相关推荐

Alist 玩家请进:一键部署全新分支 Openlist,看看香不香!

Openlist(其前身是鼎鼎大名的Alist)是一款功能强大的开源文件列表程序。它能像“万能钥匙”一样,解锁并聚合你散落在各处的云盘资源——无论是阿里云盘、百度网盘、GoogleDrive还是...

白嫖SSL证书还自动续签?这个开源工具让我告别手动部署

你还在手动部署SSL证书?你是不是也遇到过这些问题:每3个月续一次Let'sEncrypt证书,忘了就翻车;手动配置Nginx,重启服务,搞一次SSL得花一下午;付费证书太贵,...

Docker Compose:让多容器应用一键起飞

CDockerCompose:让多容器应用一键起飞"曾经我也是一个手动启动容器的少年,直到我的膝盖中了一箭。"——某位忘记--link参数的运维工程师引言:容器化的烦恼与...

申请免费的SSL证书,到期一键续签

大家好,我是小悟。最近帮朋友配置网站HTTPS时发现,还有人对宝塔面板的SSL证书功能还不太熟悉。其实宝塔早就内置了免费的Let'sEncrypt证书申请和一键续签功能,操作简单到连新手都能...

飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx

前面分享了两期TVGate:Q大的转发代理工具TVGate升级了,操作更便捷,增加了新的功能跨平台内网转发神器TVGate部署与使用初体验现在项目已经开源,并支持Docker部署,本文介绍如何通...

Docker Compose 编排实战:一键部署多容器应用!

当项目变得越来越复杂,一个服务已经无法满足需求时,你可能需要同时部署数据库、后端服务、前端网页、缓存组件……这时,如果还一个一个手动dockerrun,简直是灾难这就是DockerCompo...

深度测评:Vue、React 一键部署的神器 PinMe

不知道大家有没有这种崩溃瞬间:领导突然要看项目Demo,客户临时要体验新功能,自己写的小案例想发朋友圈;找运维?排期?还要走工单;自己买服务器?域名、SSL、Nginx、防火墙;本地起服务?断电、关...

超简单!一键启动多容器,解锁 Docker Compose 极速编排秘籍

想要用最简单的方式在本地复刻一套完整的微服务环境?只需一个docker-compose.yml文件,你就能一键拉起N个容器,自动组网、挂载存储、环境隔离,全程无痛!下面这份终极指南,教你如何用...

日志文件转运工具Filebeat笔记_日志转发工具

一、概述与简介Filebeat是一个日志文件转运工具,在服务器上以轻量级代理的形式安装客户端后,Filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并将来自...

K8s 日志高效查看神器,提升运维效率10倍!

通常情况下,在部署了K8S服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的Filebeat+ElasticSearch+Kibana这一套组合...

如何给网站添加 https_如何给网站添加证书

一、简介相信大家都知道https是更加安全的,特别是一些网站,有https的网站更能够让用户信任访问接下来以我的个人网站五岁小孩为例子,带大家一起从0到1配置网站https本次配置的...

10个Linux文件内容查看命令的实用示例

Linux文件内容查看命令30个实用示例详细介绍了10个Linux文件内容查看命令的30个实用示例,涵盖了从基本文本查看、分页浏览到二进制文件分析的各个方面。掌握这些命令帮助您:高效查看各种文本文件内...

第13章 工程化实践_第13章 工程化实践课

13.1ESLint+Prettier代码规范统一代码风格配置//.eslintrc.jsmodule.exports={root:true,env:{node...

龙建股份:工程项目中标_龙建股份有限公司招聘网

404NotFoundnginx/1.6.1【公告简述】2016年9月8日公告,公司于2016年9月6日收到苏丹共和国(简称“北苏丹”)喀土穆州基础设施与运输部公路、桥梁和排水公司出具的中标通知书...

福田汽车:获得政府补助_福田 补贴

404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,自2016年8月17日至今,公司共收到产业发展补助、支持资金等与收益相关的政府补助4笔,共计5429.08万元(不含...

取消回复欢迎 发表评论: