Day04-黑馬學習篇(一)matplot畫圖基本要點

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

相關文章
相關標籤/搜索