1、爲何要學習matplotlib?linux
(1)可以將數據進行可視化。windows
(2)使數據更加直觀、更具說服力。dom
2、什麼是matplotlibsvg
底層繪圖庫,主要作數據可視化圖表,名稱取材於MATLAB,模仿MATLAB構建函數
3、Matplotlib基本要點學習
一、測試
(1)紅色的點是座標點,有點無線散點圖,有線無點折線圖。字體
二、假設一天中每隔兩小時(range(2,26,2))的氣溫分別是[15,13,14.5,17,20,25,26,27,22,18,15]優化
(1)若是咱們把氣溫視做y軸座標,時間視爲x軸座標,二者相應的數據個數必須是一一對應的。spa
(2)range函數能夠取步長但range不能代替列表,後面會詳細講到。
(3)在繪圖前要準備好兩軸的數據(可迭代對象)
三、matplotlib下有專用的模塊pyplot模塊幫助繪製圖形,導入規則:
(1)plot函數會幫助咱們將數據一一對應,不須要手動去對應(繪製的是折線圖),對應前面的那句話:x和y軸數據個數必須一一對應。
(2)show函數會幫助咱們將圖形展現出來
四、matplotlib會自動幫咱們設置刻度、圖形大小等圖形元素,咱們能夠本身修改
目前存在問題:
(1)設置圖片大小(高清無碼的大圖)
(2)保存到本地
(3)描述信息,好比x軸和y軸表示什麼,這個圖的標題是什麼
(4)調整x或者y的刻度的間距
(5)線條的樣式(好比顏色,透明度等)
(6)標記出特殊的點(最低點和最高點等)
(7)給圖片添加水印(防止盜用)
五、設置圖片大小
(1)調用figure方法,figsize表示設置圖片的寬和高,dpi表示每英寸點的個數,調整圖片的清晰度
六、圖片的保存
(1)繪製以後保存,savefig方法設置保存的地址,能夠保存爲svg矢量圖格式,在網頁中放大不會產生失真
七、設置刻度
(1)xticks()能夠設置x的刻度,若是直接傳入x,它會將每一個x的刻度都傳入進去做爲x軸,也能夠手動傳入列表設置刻度(建立列表手動設置步長,在傳入列表後還能夠二次設置步長)
(2)yticks()能夠設置y的刻度,咱們一般將y軸最大值和最小值引入表明最高刻度和最低刻度。
from matplotlib import pyplot as plt #數據在x軸的位置,是一個可迭代對象 x = range(2,26,2) #數據在y軸的位置,是一個可迭代的對象.與x軸元素的個數一一對應 y = [15,13,14.5,17,20,25,26,26,24,22,18,15] #設置圖片大小 plt.figure(figsize=(20,8),dpi=80) #繪製圖形 plt.plot(x,y) #設置x軸刻度 _xtick_labels = [i/2 for i in range(4,49)] #建立列表做爲初始刻度 plt.xticks(_xtick_labels[::3]) #二次設置步長規定本身想要的效果 #設置y軸刻度 plt.yticks(range(min(y),max(y)+1)) #保存圖片 # plt.savefig("./t1.png") #展現圖形 plt.show()
八、小測試1:若是列表a表示10點到12點的每一分鐘的氣溫,如何繪製折線圖觀察每分鐘氣溫的變化狀況 a = [random.randint(20,35) for I in range(120)]
九、優化圖像:對於上面的氣溫變化圖像,咱們須要將橫座標修改成字符串形式的時間軸。之因此在xticks中傳入兩個參數是爲了讓數字和字符串之間造成對應。range函數返回的是一個可迭代對象,但這個對象並不是列表,因此要用list()將可迭代對象轉化爲列表進行對應操做。(注:在沒有用到字符串形式的時候不須要考慮,x軸的刻度能夠隨意規定)
十、設置中文顯示:
(1)第一種方法(適用於windows、linux):
(2)我採用了一勞永逸的方法,直接修改matplotlib的內置文件
###############第一步###################
將中文字體複製到matplotlib的字體目錄中
matplotlib默認安裝在 %PythonPath%\Lib\site-packages 目錄下。複製微軟雅黑字體到 %PythonPath%\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\ 中
###############第一步################### 配置文件matplotlibrc,以下圖方式修改便可。
十一、添加描述信息
(1)x軸標籤的添加調用函數xlabel()
(2)y軸標籤的添加調用函數ylabel()
(3)圖標題的添加調用函數titile()
from matplotlib import pyplot as plt import random import matplotlib x = range(0,120) y = [random.randint(20,35) for i in range(120)] plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) #設置x軸刻度 _xtick_labels = ["10點{}分".format(i) for i in range(60)] _xtick_labels += ["11點{}分".format(i) for i in range(60)] #取步長,數字和字符串一一對應,數據的長度同樣 plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45) #添加描述信息 plt.xlabel("時間") plt.ylabel("溫度 單位(℃)") plt.title("10到12點每3分鐘的氣溫變化狀況") plt.show()
十二、小測驗2:(圖例部分看後面一章節學習後再進行)
假設你們在30歲的時候,根據本身的實際狀況,統計出來了你和你同桌各自從11歲到30歲每一年交的女(男)朋友的數量如列表a和b,請在一個圖中繪製出該數據的折線圖,以便比較本身和同桌20年間的差別,同時分析每一年交女(男)朋友的數量走勢。
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
要求:
(1) y軸表示個數。
(2) x軸表示歲數,好比11歲,12歲等。
(3) 自定義繪製圖形的風格。
(4) 每條線添加圖例。
from matplotlib import pyplot as plt x = range(11,31) a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1] plt.figure(figsize=(20,15),dpi=80) plt.plot(x,a,label='你') plt.plot(x,b,label='你的同桌') _xtick_labels = [i for i in range(11,31)] plt.xticks(_xtick_labels) plt.yticks(range(min(b),max(a)+1)) plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=3, mode="None", borderaxespad=0.) plt.xlabel("歲數") plt.ylabel("個數") plt.title("11歲到30歲每一年交的女(男)朋友的數量") plt.show()