如何将 Matplotlib 可视化 插入到 Excel 表格中?

举报
朱小五 发表于 2022/03/24 22:03:27 2022/03/24
【摘要】 大家好,我是小五🧐 在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进行高质量的数据可视化,生成制作了不少精美优雅的图表。 但是如何将这些“优雅”延续要Excel中呢&...

a91ace25a7e40865cc5c0295318500d3.gif

大家好,我是小五🧐

在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进行高质量的数据可视化,生成制作了不少精美优雅的图表。

但是如何将这些“优雅”延续要Excel中呢?Python绘图库有很多,我们就还是拿最基本的Matplotlib为例。

35a75f671aacb39fbf88b6e70e43c3cc.png

今天就为大家演示一下,如何将Matplotlib绘制的可视化图片,插入到Excel中

其他可视化库生成的图片,也同样适用

数据可视化

目前Python用来操作Excel的库:xlrd、xlwt、openpyxl、xlwings等等。在本文中,我们会使用xlwings模块来控制Excel插入图表。

首先,使用Pandas模块读取数据,并随机预览5行。

import pandas as pd

df = pd.read_excel('可视化数据.xlsx')
df.sample(5)

输出:

4ebfcd5a2db281d8363f22bd4a9b21c2.png

使用Python读取数据后,便可以matplotlib进行数据可视化了。此处使用了《Python 数据可视化之美》[1]中的一个例子。

import numpy as np
from pandas.plotting import radviz
import matplotlib.pyplot as plt

angle = np.arange(360)/180*3.14159
x = 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')

输出:

8d26b8e81c57a4ce2c8a6d49f42d67f7.png

上面绘制得到的图形是RadViz图(径向坐标可视化)。Radviz可视化原理[2]是将一系列多维空间的点通过非线性方法映射到二维空间的可视化技术,是基于圆形平行坐标系的设计思想而提出的多维可视化方法。

图表插入Excel

在xlwings库中,想要实现图表插入Excel里,主要靠的是picture对象的add()方法。

它有几个重要的参数,如下表所示:

参数名 释义用法
image 文件路径或Matplotlib图形对象。
left 以磅为单位距离左侧边缘的位置,默认为0。
top 以磅为单位距离上侧边缘的位置,默认为0。
width 设置图宽。
height 设置图高。
name Excel图片名称。如果未提供,则默认为Excel标准名称。
update 替换更新图片。
scale 缩放尺度。

在交互式环境中输入如下命令:

import xlwings as xw

app = xw.App(visible=False, add_book=False)
wb = app.books.open('可视化数据.xlsx')
sheet = wb.sheets[0]  # 选择第1个工作表
sheet.pictures.add(figure)  # 插入图表

wb.save("可视化数据-新.xlsx")
wb.close()
app.quit()

在上述代码中,其实关键代码就一行,其他的代码都是打开、打开、打开,关闭、关闭、关闭。这是因为xlwings想要直接操作工作表中的单元格,需要经过多重结构,具体如下图所示。

ce5a0d18ff95272b793ee4d1938b00fa.png

最后,打开原本的Excel表格,发现matplotlib绘制的图表已经与数据放在了一起。

5ad66f982e83a6376a407e7274ac1ed7.png

这样,我们就实现了将Matplotlib绘制的可视化图片插入到Excel中。

如果你对今天的分享感兴趣,想获得本文的代码+数据 动手试一试,可以在本公众号【凹凸数据】后台回复“0323”得到下载地址。

参考资料

[1]

《Python数据可视化之美:专业图表绘制指南:

[2]

Radviz可视化原理: https://blog.csdn.net/Haiyang_Duan/article/details/78985225

4bb5b4de75fd6d84acce6a088141f967.gif

dvdf

aa6a39c7addae52ccaab38d8e9c3529d.png

用Python操作Excel自动化办公,目前有两个主流的Python库:openpyxl和xlwings。最近正好我看见有本新书《左手Python,右手Excel:带飞Excel的Python绝技》,它其中的操作Excel部分使用的就是xlwings模块

Excel是一个深受读者喜爱的电子表格与数据处理工具,其功能丰富且易于使用,但在重复处理大量数据时很难实现自动化。本书介绍如何使用Python处理Excel任务,以及在Excel中调用Python进行自动化操作。从基础的Python语法到数据分析和Excel自动化,都进行详细的讲解,对于初次学习Python的初学者,自动化办公软件开发人员,以及想要在实践中自动化烦琐重复性任务的人员来说,是一本很好的参考书。

看到文末的同学,我会在给本文【点赞+分享+留言】的小伙伴中,抽取两位免费赠出此书,开奖时间3天后。

99bce7ceae8545e159c8b7f70be5ca4c.png

51c9d334ee57f56aff8190d54e4ab138.gif

点击这里,阅读更多数据文章!

文章来源: alltodata.blog.csdn.net,作者:朱小五是凹凸君呀,版权归原作者所有,如需转载,请联系作者。

原文链接:alltodata.blog.csdn.net/article/details/123700531

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。