matplolib是一個python的繪圖模塊棺聊,功能非常的強(qiáng)大家卖。這里是matplotlib的官網(wǎng):http://matplotlib.org/
首先在我的例子中棕诵,需要導(dǎo)入以下:
from matplotlib.font_manager import FontProperties
import matplotlib as mpl
import datetime
import pandas as pd
import matplotlib.dates as mdate
os_style = os.name
if os_style is 'posix' : #在linux里,不使用以下語句可能會運行錯誤
import matplotlib
matplotlib.use("Pdf")
###import matplotlib.pyplot as plt
在matplotlib里字體設(shè)置如下:
# 用來正常顯示中文標(biāo)簽
mpl.rcParams['font.sans-serif'] = ['SimHei']
#讀取字體文件
#font = FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)
#上述兩個操作都可以解決中文顯示的問題
figure = plt.figure(figsize=(6, 6)) #設(shè)置一個6*6大小的畫布
figure.autofmt_xdate() #當(dāng)x軸太擁擠的時候可以讓他自適應(yīng)
plt.title("曲線圖",color="blue")#設(shè)置畫布抬頭环肘,顏色是藍(lán)色
ax = figure.add_subplot(111) #111意思是設(shè)置畫布為1行1列的圖表侈沪,ax為從左到右從上到下第一塊圖表揭璃。這個功能可以在一張圖表中顯示多張圖標(biāo)
mpl.rc('xtick', labelsize=10) # 設(shè)置坐標(biāo)軸刻度顯示大小
mpl.rc('ytick', labelsize=10) #設(shè)置y刻度大小
#ax.set_xticklabels(labels=label_list, fontproperties=font, rotation=12)#設(shè)置x軸刻度字體為font
plt.xlabel('xlabel',color="gray")#設(shè)置X軸標(biāo)注為xlabel,顏色灰色
plt.ylabel("ylabel",color="gray")
設(shè)置X軸參數(shù)為時間:
在實際中亭罪,我們經(jīng)常會繪制x軸為時間的圖表瘦馍,這種圖表需要對x軸進(jìn)行專門的設(shè)置才可以實現(xiàn)
#設(shè)置ax的圖表中x軸為 時間格式的 月-日
ax.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
# 設(shè)置X軸的刻度是1900年1月1日到1901年1月1日剛好一年,間隔為20天一個刻度应役,因為1900年的時間值為0情组,所以使用這個可以忽略年份。
plt.xticks(pd.date_range(start='19000101', end='19010101', freq="20D"))
#x軸刻度傾斜箩祥,可以防止太擁擠
plt.xticks(rotation=75)
設(shè)置好了x軸的參數(shù)院崇,接下來需要傳入x,y的值:
#data_list 是一個字典列表。
#data_list[date]是一個格式為年/月/日的字符串
#data_list[price]是一個數(shù)值
x=[];y=[]#定義兩個列表
for item in data_list: #逐年取出單年所有信息
if "02/29" not in item["date"]:#這個是為了忽略閏年多的一天袍祖,不然無法在同一張表里顯示閏年和非閏年的數(shù)值
date = item["date"][5:] # 舍棄年份底瓣,只取字符串第五位開始后的數(shù)據(jù),取出效果是 月/日
y.append(item["price"]) #價格數(shù)值加入y列表
x.append(datetime.datetime.strptime(date, "%m/%d"))
#datetime.datetime.strptime(date, "%m/%d")函數(shù)可以將字符串轉(zhuǎn)化成時間戳蕉陋,這里只有月份和日捐凭,所以會直接轉(zhuǎn)化成默認(rèn)的1900年x月x日,這樣就可以直接跟x軸上的數(shù)值對應(yīng)上
設(shè)置雙y軸
#設(shè)置雙坐標(biāo)軸寺滚,右側(cè)Y軸
ax2=ax.twinx()
將x柑营,y列表顯示在圖表上:
#將x,y傳入圖標(biāo)顯示屈雄,曲線名稱為x年價格村视,這里也可以不設(shè)置曲線名稱,但是當(dāng)你需要在一個圖表上顯示多條曲線的時候酒奶,需要用label來顯示和區(qū)分
plt.plot(x, y,label="2015年價格")
#如果要顯示第二個曲線蚁孔,那就直接
plt.plot(x1, y1,label="2016年價格")
上述完成你還需要以下步驟來顯示圖表上
legend = ax.legend(shadow=True)
plt.legend() #顯示曲線標(biāo)注,就是上面的2015年價格惋嚎,2016年價格
plt.show()#顯示圖標(biāo)