利用python将 Matplotlib 可视化插入到 Excel表格中
作者:??Python编程学习圈???? 发布时间:2023-09-26 09:03:25
前言:
在生活中工作中,我们经常使用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中。
来源:https://juejin.cn/post/7108554139436580872
猜你喜欢
- 最近需要将实验数据画图出来,由于使用python进行实验,自然使用到了matplotlib来作图。下面的代码可以作为画图的模板代码,代码中有
- pycharm设置Console控制台输出自动换行解决方法File --> Settings… --> E
- 本文实例讲述了Python3爬虫学习之应对网站反爬虫机制的方法。分享给大家供大家参考,具体如下:如何应对网站的反爬虫机制在访问某些网站的时候
- 最近常有厦门的客户通过网站上的联系方式加我QQ,询问网站改版的情况。几乎每日都要针对客户网站存在的问题做一番分析,然后客户以价格等其他因素结
- 不难,代码总共也就25行,大致逻辑如下。总共分为是下面两步在云服务器上部署自定义消息处理服务这里需要我们自定义来处理用户发送过来的消息首先导
- 本文实例讲述了php利用cookies实现购物车的方法。分享给大家供大家参考。具体分析如下:php购物车是在电子商务网站会用到的,一种像超市
- 将Copy of ********.bmp或者Copy of Copy of ********.bmp 此类文件统一命名为********0
- 一,封装封装是面向对象编程思想的重要特征之一。(一)什么是封装封装是一个抽象对象的过程,它容纳了对象的属性和行为实现细节,并以此对外提供公共
- 您是否记得关闭所有的XHTML元素,在HTML中一些元素没有必要被关闭。当下一个元素开始的时候,上一个元素就自动被关闭。XHTML中是不允许
- 一、协程官方描述;协程是子例程的更一般形式。 子例程可以在某一点进入并在另一点退出。 协程则可以在许多不同的点上进入、退出和恢复。 它们可通
- 老师罚学生抄写英文单词,结果学生给抄成这样……
- 刚接触 Go 语言时,就听说有一个叫rune的数据类型,即使查阅过一些资料,对它的理解依旧比较模糊,加之对陌生事物的天然排斥,在之后很长一段
- 该脚本是为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我!CSV
- 今天我们来一起看看Dreamweaver MX 2004在加密FTP 传送 方面的新功能。我们一般在做
- 如果你想进一步了解如何用JavaScript来为网页添加交互性的话,你也许已经听过JavaScript的事件代理(event delegat
- 这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 你可能会遇到这样的要求,一个脚本,只允许有一个实例。在python中,为了实现这个需求,可以引入fcntl模块对文件加一个排他锁,这样一来,
- 1.将下面一段代码插入<head>与</head>之间:<script> function&
- 一、FBVFBV(function base views) 就是在视图里使用函数处理请求。二、CBVCBV(class base views
- argparse介绍 argparse包用于解释命令行参数。这里给出几个常用的方法。# 创建解析器对象# @para: descripti