天天看點

将Python繪制的圖形儲存到Excel檔案中

标簽:Python與Excel,pandas

在上篇文章中,我們簡要地讨論了如何使用web資料在Python中建立一個圖形,但是如果我們所能做的隻是在Python中顯示一個繪制的圖形,那麼它就沒有那麼大的用處了。假如使用者不知道如何運作Python并重新這個繪制圖形呢?解決方案是使用Excel作為顯示結果的媒介,因為大多數人的電腦上都安裝有Excel。是以,我們隻需将Python生成的圖形儲存到Excel檔案中,并将電子表格發送給使用者。

根據前面用Python繪制圖形的示例(參見:在Python中繪圖),在本文中,我們将:

1)美化這個圖形,

2)将其儲存到Excel檔案中。

美化圖表

之前我們生成的這個圖,盡管對于2行代碼來說并不太糟糕,但該圖與專業級圖相差甚遠,是以讓我們使它更漂亮。

将Python繪制的圖形儲存到Excel檔案中

圖1

我們将使用matplotlib修改繪圖格式。由于這不是本文的主題,是以不會詳細介紹下面的代碼。後續文章中會有講解。

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import (
                              FormatStrFormatter,
                              AutoMinorLocator,
                               FuncFormatter,
                               )
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter
df =pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
df = df.iloc[:,4:]
global_num = df.sum()
fig, ax = plt.subplots()
ax.set(title = 'Global CovidConfirmed Cases',
       xlabel = 'Time',
       ylabel = 'Number of cases')
ax.yaxis.set_major_formatter(FuncFormatter(lambdax, p: format(x/1000000) +'M'))
date_form = DateFormatter("%m-%d")
ax.xaxis.set_major_formatter(date_form)
locator = mdates.DayLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_locator(mdates.WeekdayLocator(interval=3))
ax.yaxis.grid()
dates = pd.to_datetime(global_num.index)
plt.plot(dates, global_num)
plt.show()           

複制

将Python繪制的圖形儲存到Excel檔案中

圖2

将Python生成的圖形儲存到Excel檔案中

我們需要先把圖形儲存到電腦裡。

plt.savefig(r'D:\python_pretty_plot.png')           

複制

然後可以使用xlsxwriter庫建立一個Excel檔案。要将确認病例資料儲存到Excel中,執行以下操作:

writer = pd.ExcelWriter(r'D:\Python_plot.xlsx',engine = 'xlsxwriter')
global_num.to_excel(writer,sheet_name='Sheet1')           

複制

然後,将圖像添加到該工作表:

worksheet = writer.sheets['Sheet1']
worksheet.insert_image('C2','D:\python_pretty_plot.png')
writer.save()           

複制