栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

openpyxl操作之散点图:使用openpyxl画散点图的方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

openpyxl操作之散点图:使用openpyxl画散点图的方法

一、文章背景

        由于需要用openpyxl在工作表里画散点图,就想找一个对应的教程,翻了好久,发现都是对官方文档的简单复制,大同小异,对新手并不友好。因此,经过摸索,总结了openpyxl在Excel里画散点图的操作方法,希望对大家有一定的帮助。

        为便于理解,本文借鉴在Excel里画散点图的步骤及术语来进行描述。

二、openpyxl画散点图步骤

        基本步骤可分为七步,下面用代码的形式来说明:

#CSDN, author:y_996, time:2021/10/24

#第一步:导入库及要使用模块
from openpyxl import load_workbook 
from openpyxl.chart import(ScatterChart,Reference,Series)
#第二步:打开Excel及工作表
wb=load_workbook('D:/python/散点图数据.xlsx')
ws=wb.active
#第三步:选择X、Y轴数据,并创建成一个数据系列
xdata=Reference(worksheet=ws,min_row=2, max_row=13,min_col=2,max_col=2)
ydata=Reference(worksheet=ws,min_row=2, max_row=13,min_col=3,max_col=3)
series1=Series(ydata,xdata,title_from_data=False)
#第四步:创建散点图,并设置图的样式
chart=ScatterChart()
chart.title='散点图标题'
chart.style=10 
chart.y_axis.title='这是Y轴标题'
chart.x_axis.title='这是X轴标题'
#第五步:将数据系列添加到图中
chart.append(series1)
#第六步:将图添加到工作表中
ws.add_chart(chart,'D6')
#第七步:保存Excel
wb.save('D:/python/散点图数据.xlsx')

        上述代码已经可以成功的画一个简单的散点图了,源数据和运行结果见下面两个图:

        有人可能会说,你这画的不是散点啊,别着急,慢慢往下看…

        首先,我们要了解一下Excel里散点图的种类,打开Excel,在刚才的图上点右键,选择“更改图表类型…”,可以看到散点图有好几种,这个叫做带直线的散点图。

          如果我们需要第一种的散点,需要更改点的样式,代码如下:

#CSDN, author:y_996, time:2021/10/24

#提示:各位可以想象一下Excel里是如何修改点的样式,方法基本一致。
#设置系列1数据点的样式,圆圈
series1.marker.symbol = "circle"
#设置系列1数据点的颜色,以下两行代码将其改为红色
series1.marker.graphicalProperties.solidFill = "FF0000"  # 点的内部填充颜色
series1.marker.graphicalProperties.line.solidFill = "FF0000"  #点的外边框颜色

#关键的一步:关闭系列1数据点之间的连接线
series1.graphicalProperties.line.noFill = True

加上以上代码后,效果如下(此处没有修改点的颜色),一个正宗的散点图画好了。

 三、画图步骤解说

        第一步,第二步是基本操作,没啥可说的。

        第三步:xdata、ydata分别表示X轴、Y轴的数据,Reference表示引用,即数据来源。以xdata为例,括号里的参数分别为:ws为工作表名,min_row=2, max_row=13为画图数据的开始行和结束行,同样,min_col=2,max_col=2为X轴数据所在列数。

        Series是系列的意思,openpyxl需要将X轴Y轴数据打包为一个系列,Series里的参数,前两个是X轴、Y轴数据,注意参数顺序,如果要某一列数据显示在图的X轴上,要排放在第2位;title_from_data 表示选中的数据里是否包括系列名称,我们没有,所以值为False;另外,Series里还有一个参数title,为数据系列的名称,我们没有写,程序默认为:title='系列1'。

        这一步对应于Excel里的“选择数据--编辑数据系列 ”的操作,类似于下图:

        第四步:首先实例化一个散点图,chart=ScatterChart(),这是一个固定操作,openpyxl里画任何的图都需要这一步。然后设置图的样式,样式参数很多,下面列举一些常用的:

#CSDN, author:y_996, time:2021/10/24

#大小及位置
chart.anchor = 'C1' #图的左上角位于C1单元格
chart.height = 7
chart.width = 14

#标题及样式
chart.title='散点图标题'
chart.style=10  #1到48之间的整数
chart.y_axis.title='这是Y轴标题'
chart.x_axis.title='这是X轴标题'

#图例
chart.legend = None

#坐标轴最大、最小值
chart.x_axis.scaling.min = 0
chart.y_axis.scaling.min = 0
chart.x_axis.scaling.max = 25
chart.y_axis.scaling.max = 100

#坐标轴最大、最小值的方向(比如0-25或25-0)
chart.x_axis.scaling.orientation = 'minMax'
chart.y_axis.scaling.orientation = 'maxMin'

#纵坐标轴交叉于
chart.y_axis.crosses='max'

# 对数刻度(以10为底、以e为底)
chart.x_axis.scaling.logbase = 10
chart.y_axis.scaling.logbase = 10
chart.x_axis.scaling.logbase = math.e
chart.y_axis.scaling.logbase = math.e

#网格线:主要网络线
chart.y_axis.majorGridlines = None

#刻度线:主刻度线类型
chart.x_axis.majorTickMark = "out"

        第五步:把第三步打包好的数据系列添加到图中,我们只有一个数据系列series1,添加方法为:chart.append (series1)。

        第六步:把图添加到工作表中,方法为:ws.add_chart (chart,'D6'),其中ws为工作表名,括号里chart为图名,D6表示图的创建位置,图的左上角位于工作表的D6单元格。

        第七步:保存Excel。如果是原路径保存,程序运行前,需先关闭打开的Excel,否则会报错。

四、补充说明

        常用的数据点的样式,对应到Excel里的位置为:设置数据点--标记--标记选项。

#CSDN, author:y_996, time:2021/10/24

# 常用的数据点样式
#series1.marker.symbol = 'circle'

'auto'     #自动
'dash'     #短线 --
'triangle' #三角形
'square'   #正方形
'circle'   #圆圈
'dot'      #圆点
'plus'     #加号 +
'star'     #星号 *
'diamond'  #菱形
'x'        #叉叉 X
'picture'  #图片(Excel里需手动添加图片)
 五、结束语

        以上就是我总结的openpyxl画散点图的操作方法,画其他类型图的操作思路跟这个差不多,大家也可以以此为借鉴。 如有不足之处,欢迎指正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号