当前位置: 首页 > 后端技术 > Python

如何将Matplotlib可视化插入Excel工作表?

时间:2023-03-26 13:48:03 Python

在生活和工作中,我们经常使用Excel来存储数据,使用Tableau等BI程序来处理和可视化数据。我们也经常使用R和Python编程来进行高质量的数据可视化,并制作了许多漂亮优雅的图表。但是如何将这些“优雅”延伸到Excel呢?Python绘图库有很多,我们以最基本的Matplotlib为例。今天,我将向大家展示如何将Matplotlib绘制的可视化图片插入到Excel中。其他可视化库生成的图片也适用于数据可视化。目前Python操作Excel使用的库有:xlrd、xlwt、openpyxl、xlwings等,本文将使用xlwings模块控制Excel插入图表。首先,使用Pandas模块读取数据并随机预览5行。importpandasaspddf=pd.read_excel('Visualizationdata.xlsx')df.sample(5)输出:用Python读取数据后,可以用matplotlib可视化数据。这里使用了《Python 数据可视化之美》[1]中的一个例子。将numpy导入为npfrompandas.plotting将radvizimportmatplotlib.pyplot导入为pltangle=np.arange(360)/180*3.14159x=np.cos(angle)y=np.sin(angle)figure=plt.figure(figsize=(3.5,3.5),dpi=100)ax=radviz(df,'variety',color=['#FC0000','#F0AC02','#009E88'],edgecolors='k',marker='o',s=34,linewidths=1)plt.plot(x,y,color='gray')plt.axis('off')plt.legend(loc="center",bbox_to_anchor=(1.1,0,0,0.4),edgecolor='none',facecolor='none',title='Group')output:上面画的图是RadViz图(径向坐标可视化)。Radviz可视化原理[2]是一种可视化技术,通过非线性方法将多维空间中的一系列点映射到二维空间。它是一种基于圆平行坐标系设计思想的多维可视化方法。图表被插入到xlwings库中的Excel中。将图表插入Excel,主要依赖图片对象的add()方法。它有几个重要的参数,如下表所示:参数名称定义用途图像文件路径或Matplotlib图形对象。left距左边缘的位置,以磅为单位,默认为0。top为距上边缘的距离,以磅为单位,默认为0。width设置图像宽度。height设置图表的高度。nameExcel图片名称。如果未提供,则默认为Excel标准名称。update替换更新图片。缩放缩放比例。在交互式环境中输入以下命令:importxlwingsasxwapp=xw.App(visible=False,add_book=False)wb=app.books.open('visualdata.xlsx')sheet=wb.sheets[0]#选择第一个工作表sheet.pictures.add(figure)#插入图表wb.save("Visualdata-new.xlsx")wb.close()app.quit()上面的代码中,关键代码其实只是一行,其他代码是打开,打开,打开,关闭,关闭,关闭。这是因为xlwings如果要直接操作工作表中的单元格,需要经过多个结构体,如下图所示。最后打开原来的Excel表格,发现matplotlib绘制的图表已经和数据放在一起了。这样,我们就实现了将Matplotlib绘制的可视化图片插入到Excel中。以上就是本次分享的全部内容。想了解更多Python知识,请前往公众号:Python编程学习圈,每日干货分享,送“J”,海量学习资料。