天天看點

python實戰學習之matplotlib繪圖

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()           
python實戰學習之matplotlib繪圖

更多屬性設定

  • 設定圖檔大小

    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()
           

如下圖所示

python實戰學習之matplotlib繪圖

繼續閱讀