利用python將 Matplotlib 可視化插入到 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中。

到此這篇關於利用python將 Matplotlib 可視化 插入到 Excel 表格中的文章就介紹到這瞭,更多相關Matplotlib 插入 Excel 表格內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: