在上篇文章中,我們簡要地討論了如何使用web數(shù)據(jù)在Python中創(chuàng)建一個圖形,但是如果我們所能做的只是在Python中顯示一個繪制的圖形,那么它就沒有那么大的用處了。假如用戶不知道如何運(yùn)行Python并重新這個繪制圖形呢?解決方案是使用Excel作為顯示結(jié)果的媒介,因?yàn)榇蠖鄶?shù)人的電腦上都安裝有Excel。因此,我們只需將Python生成的圖形保存到Excel文件中,并將電子表格發(fā)送給用戶。
根據(jù)前面用Python繪制圖形的示例(參見:在Python中繪圖),在本文中,我們將:
1)美化這個圖形,
2)將其保存到Excel文件中。
美化圖表
之前我們生成的這個圖,盡管對于2行代碼來說并不太糟糕,但該圖與專業(yè)級圖相差甚遠(yuǎn),所以讓我們使它更漂亮。
圖1我們將使用matplotlib修改繪圖格式。由于這不是本文的主題,所以不會詳細(xì)介紹下面的代碼。后續(xù)文章中會有講解。
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()
圖2
將Python生成的圖形保存到Excel文件中
我們需要先把圖形保存到電腦里。
plt.savefig(r'D:\python_pretty_plot.png')
然后可以使用xlsxwriter庫創(chuàng)建一個Excel文件。要將確認(rèn)病例數(shù)據(jù)保存到Excel中,執(zhí)行以下操作:
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()
注:本文學(xué)習(xí)整理自pythoninoffice.com。
聯(lián)系客服