利用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
猜你喜欢
- 使用pytorch的dataloader报错:RuntimeError: stack expects each tensor to be e
- 1.global关键字默认情况下,在局部作用域对全局变量只能进行:读取,修改内部元素(可变类型),无法对全局变量进行重新赋值读取:CITY=
- 本文通过Python3+PyQt5实现自定义部件–分数滑块。它既能支持键盘也支持鼠标,使用物理(视口)坐标通过绘制方式显示。#!/usr/b
- numpy的delete是可以删除数组的整行和整列的,下面简单介绍和举例说明delete函数用法:numpy.delete(arr, obj
- Mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问.我的Mysql环境是ubuntu+mysql51.修改/etc/m
- 自己的小Python项目好几天没有写了,今天打开PyCharm准备继续写,突然发现之前的激活码被取消不能用了,本来激情满满的准备干活啦!之前
- 两年前,我们开发了一套基于Flash的文件(主要是图片)上传RIA应用,提供给阿里巴巴的用户使用。如果你使用过Wordpress或flick
- 本文实例讲述了Flask-Mail用法。分享给大家供大家参考,具体如下:很多类型的应用程序都需要在特定事件发生时提醒用户,而常用的通信方法是
- 函数没有SQL的可移植性强 能运行在多个系统上的代码称为可移植的(portable)。相对来说,多数SQL语句是可移植的,在SQL实现之间有
- 单线程执行python的内置模块提供了两个内置模块:thread和threading,thread是源生模块,threading是扩展模块,
- 使用open-cv实现简单的手势识别。刚刚接触python不久,看到了很多有意思的项目,尤其时关于计算机视觉的。网上搜到了一些关于手势处理的
- 一 前言 提出这个问题,是因为在工作中发现 mysql 中的 user 表的 id 默认
- 前言:支付宝 2022 集五福活动正式开启数据显示,过去六年累计参与支付宝集五福的人数已经超过了 7 亿,每 2 个中国人里就有 1 个曾扫
- python的PIL库简直好用的不得了,PIL下面的Image库更是封装了很多对图片处理的函数,关于Image库的介绍和使用,看这里:htt
- 前言使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上
- 前言在写 python 程序的时候,经常会用到引入其他文件夹里的 py 文件,要是都在同目录下直接 import 就好了,可是有的不在同一个
- pip install python-Levenshtein失败pip install xxxx失败的情况很多情况下pip install
- 本篇文章主要介绍了Python基于mysql实现学生管理系统,分享给大家,具体如下:import pymysqlimport redef i
- 你的设计为什么平平无奇,为什么吸引不到别人的眼球,这里先来说说什么是焦点(也可以称兴趣中心或者视觉中心),我认为用焦点更能简单准确的阐述。有
- python用terminal输入参数import argparseif __name__ == '__main__':pa