由于需要用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画散点图的操作方法,画其他类型图的操作思路跟这个差不多,大家也可以以此为借鉴。 如有不足之处,欢迎指正。



