matplotlib 是最流行的Python底層繪圖庫,主要做資料可視化圖表 可以将資料可視化,能夠更直覺的呈現資料
matplotlib繪圖基本要點
首先實作一個簡單的繪圖
# 導入pyplot
from matplotlib import pyplot as plt
x = range(1,13)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 傳入x和y,通過plot繪制折現
plt.plot(x,y)
# 展示繪圖
plt.show()

更多屬性設定
- 設定圖檔大小
fig = plt.figure(figsize=(20,8),dpi=80)
通過執行個體化一個figure并且傳遞參數,能夠在背景自動使用該figure
在圖像模糊的時候可以傳入dpi參數,讓圖檔更加清晰
- 儲存到本地
plt.savefig(path) #path 圖檔的儲存路徑
- 中文設定
my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
matplotlib預設不支援中文字元,因為預設的英文字型無法顯示漢字
設定中文字型(指定具體的字型檔案路徑,然後再需要顯示中文的地方添加fontproperties參數)
- x軸,y軸,圖表的描述資訊
plt.xlabel("時間",fontproperties=my_font)
plt.ylabel("溫度",fontproperties=my_font)
plt.title("一天的溫度的變化",fontproperties=my_font)
- 調整x或者y的刻度的間距
plt.xticks(x) #刻度設定 傳入的是清單x的資料
plt.xticks(x[::2]) #調整刻度 每間隔兩個輸出一個
x_ticks = ["第{}個".format(i) for i in x]
讓清單X中的資料和x_ticks上的資料都傳入,最終會在x軸上一一對應顯示出來 兩組資料的長度必須一樣
plt.xticks(x[::5],x_ticks[::5],rotation=45,fontproperties=my_font)
為了不讓字元串重疊覆寫,使用rotation進行旋轉rotation=45
- 線條的樣式(比如顔色,透明度等)
plt.plot(x,label = "資料",linestyle="-",color="red",alpha=0.5)
linestyle 設定線條的樣式
linewidth 設定線條的粗細
color設定線條的顔色
alpha = 0.5 設定線條的透明度
plt.legend(prop=my_font,loc="best")#通過plot函數的label設定圖例
prop 設定圖例的字型
loc 設定圖例的位置 預設為右上角
- 添加網格
plt.grid()
- 标記出特殊的點(比如最高點和最低點)
擷取最大值最小值的索引
max_indx=y.index(max(y))
設定最大值
plt.plot(x[max_indx],y[max_indx],'ks')
顯示最大值
show_max='['+str(x[max_indx])+','+str(y[max_indx])+']'
plt.annotate(show_max,xytext=(x[max_indx],y[max_indx]),xy=(x[max_indx],y[max_indx]))
- 給圖檔添加一個水印(防僞,防止盜用)
添加水印
fig.text(0.75, 0.45, 'hello world',
fontsize=40, color='gray',
ha='right', va='bottom', alpha=0.4)
折線圖執行個體
from matplotlib import pyplot as plt
# import random
from matplotlib import font_manager
#matplotlib預設不支援中文字元,因為預設的英文字型無法顯示漢字
#設定中文字型(指定具體的字型檔案路徑,然後再需要顯示中文的地方添加fontproperties參數)
my_font = font_manager.FontProperties(fname=r"c:\\windows\\fonts\\simsun.ttc")
#figure圖形圖示的意思在這裡指的就是我們畫的圖
#通過執行個體化一個figure并且傳遞參數,能夠在背景自動使用該figure執行個體
#在圖像模糊的時候可以傳入dpi參數,讓圖檔更加清晰
fig = plt.figure(figsize=(15,6),dpi=80)
#資料在x軸的一個位置,是一個可疊代對象
x = range(2,26,2)
#資料在y軸的一個位置
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 擷取最大值最小值的索引
max_indx=y.index(max(y))
min_indx=y.index(min(y))
#傳入x和y,通過plot繪制折線圖
#設定線條樣式,顔色,透明度
plt.plot(x,y,label = "溫度",linestyle="-.",color="red",alpha=0.5)
#通過plot函數的label設定圖例
plt.legend(prop=my_font,loc="best")
# 設定最大值
plt.plot(x[max_indx],y[max_indx],'ks')
# 顯示最大值
show_max='['+str(x[max_indx])+','+str(y[max_indx])+']'
plt.annotate(show_max,xytext=(x[max_indx],y[max_indx]),xy=(x[max_indx],y[max_indx]))
# 設定最小值
plt.plot(x[min_indx],y[min_indx],'gs')
# 顯示最小值
show_min='['+str(x[min_indx])+','+str(y[min_indx])+']'
plt.annotate(show_min,xytext=(x[min_indx],y[min_indx]),xy=(x[min_indx],y[min_indx]))
# 設定水印
fig.text(0.75, 0.45, 'hello world',
fontsize=40, color='gray',
ha='right', va='bottom', alpha=0.4)
# 設定x軸的刻度
x_ticks = ["X日{}點".format(i) for i in x]
plt.xticks(x,x_ticks,rotation=45,fontproperties=my_font)
# 設定x軸,y軸的标注,标題
plt.xlabel("時間",fontproperties=my_font)
plt.ylabel("溫度",fontproperties=my_font)
plt.title("一天的溫度的變化",fontproperties=my_font)
# 設定網格
plt.grid()
plt.show()
如下圖所示