目录
- 数据可视化
- 图表插入Excel
前言:
在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进行高质量的数据可视化,生成制作了不少精美优雅的图表。
但是如何将这些“优雅”延续要Excel中呢?Python绘图库有很多,我们就还是拿最基本的Matplotlib为例。

今天就为大家演示一下,如何将Matplotlib绘制的可视化图片,插入到Excel中。
其他可视化库生成的图片,也同样适用
数据可视化
目前Python用来操作Excel的库:xlrd、xlwt、openpyxl、xlwings等等。在本文中,我们会使用xlwings模块来控制Excel插入图表。
首先,使用Pandas模块读取数据,并随机预览5行。
import pandas as pd
df = pd.read_excel('可视化数据.xlsx')
df.sample(5)
输出:

使用Python读取数据后,便可以matplotlib进行数据可视化了。此处使用了《Python 数据可视化之美》中的一个例子。
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')
输出:

上面绘制得到的图形是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想要直接操作工作表中的单元格,需要经过多重结构,
具体如下图所示:

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

这样,我们就实现了将Matplotlib绘制的可视化图片插入到Excel中。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)