數據可視化工具matplotlit的使用

python數據可視化工具matplotlib各個畫圖工具使用說明。

1 線形圖

直接調用plot()函數繪製

importmatplotlib.pyplot as plt             # matplotlib包,可視化數據

importnumpy as np                       # numpy包,各類數學函數包

#獲取數據集,範圍是從-1到1,之間的50個

x= np.linspace(0,10,500)

#繪製的函數

y= 2*x + 1

#繪製圖像

plt.plot(x,y)

plt.show()


圖1-1 普通圖像繪製


2 Figure

2.1 Figure特點

將函數圖像畫在Figure窗體中,需要注意的是:

f1 = plt.figure(num = 1)

……

f2 = plt.figure(num=2)

……

在f1和f2窗體之間的對函數圖像的設置都是針對f1上的。f2後面的代碼在遇到下一個figure之前都是作用在f2上的。

2.2 關鍵代碼

#第一個figure

#在這個figure聲明之後,下一個figure聲明之前的代碼都是在當前figure上的操作

#num = 1 設置的是figure窗體的序號

plt.figure(num= 1)

plt.plot(x,y1,color= 'red')

#將兩個圖像在同一個figure中畫

plt.plot(x,y2,linestyle='--')

#第二個figure

#figuresize=(10*14) 設置的是figure的長高

plt.figure(num= 2,figsize=(10,14))

#linestyle='--' 設置繪製的線爲虛線

plt.plot(x,y2,linestyle='--')


圖2-1 figure效果

3 座標軸設置

3.1 座標軸設置的基本步驟

(1)     獲取figure邊框的對象

(2)     將上、右的邊框隱藏

(3)     設置x軸爲底邊框,y軸爲左邊框

(4)     設置x軸,y軸的位置,是通過設置底邊框,左邊框的位置設置。設置x、y軸的位置,就是設置x軸的起點在y軸上的位置,設置y軸的起點在x軸上的位置。

(5)     給x、y軸添加label標籤

(6)     設置座標軸的刻度

詳細的步驟看代碼。

3.2 關鍵代碼

#設置座標軸的取值範圍

plt.xlim(0,10)

plt.ylim(0,20)

#設置座標軸的標籤

plt.xlabel("x")

plt.ylabel("y") 

#設置X軸的刻度

new_xticks= np.linspace(0,10,10)     # 範圍是-1~2,取5個值

new_yticks= np.linspace(0,20,5)

plt.xticks(new_xticks)

plt.yticks(new_yticks) 

#設置Y軸刻度標籤

plt.yticks([5,10,15,20],

           [r'$normal$',r'$good$',r'$very\good$',r'$perfect$'])



圖3-1 座標軸位置設置效果

4 Legend

4.1 Legend簡介

Legend是在figure窗體中顯示一個小的窗體,標註函數圖像的相關信息。可以設置其位置,顯示的內容,以及函數圖像在其內的標籤。如圖4-1中紅色框框所示。

4.2 關鍵代碼

#handles=[l1,l2,]表示要顯示在框中的線,labels=['a','b']表示在框中各個線的標籤,loc = 'best'設置框的位置,best,會自動將框放在數據最少的位置

#plt.legend(handles=[l1,l2,],labels=['a','b',],loc = 'best')

plt.legend(loc= 'best')

                                                                                圖4-1 Legend 

5 Annotion

5.1 函數圖像標註

給函數圖像的某一點添加標註,比如表明某一點的函數值,或者對某點進行解釋說明。有兩種方式:一個是調用annotion() 函數繪製,一個是調用text()繪製。

5.2. 關鍵代碼

(1)      調用annotion

plt.annotate(r'$2x+5=%s$'%y0,xy= (x0,y0),xycoords = 'data',xytext = (+30,-30),textcoords = 'offsetpoints',fontsize = 16,

arrowprops= dict(arrowstyle = '->',connectionstyle = "arc3,rad = .2"))

             ‘’’

r'$2x+5=%s$'%y0:設置標註內容  

xy =(x0,y0):設置標註點   

xycoords ='data' 參考座標   

xytext =(+30,-30):標註文本的位置

‘’’

(2)      調用text

plt.text(-8,8,r'$this\is\ the\ some\ text.\mu\ \sigma_i\ \alpha_t$',fontdict={'size':16,'color':'r'})


圖5-1 annotion效果

6 Tick

6.1 設置座標軸刻度的背景

在函數圖像複雜的情況下,座標軸刻度可能會被遮蓋,這時可以通過設置刻度的背景顏色來凸顯出刻度,將用到bbbox()函數。

6.2 關鍵代碼

for label in ax.get_xticklabels() + ax.get_yticklabels():

   label.set_fontsize(12)

    # alpha = 0.7 設置透明度edgecolor = 'None':邊框 facecolor = 'white':背景

   label.set_bbox(dict(facecolor = 'white',edgecolor = 'None',alpha =0.7,zorder = 2))


圖6-1 Tick效果

7 Scatter

7.1 Scatter簡介

用來繪製散點圖,可以繪製直線、曲線的散點圖。實際效果看圖7-1。

7.2 關鍵代碼

importmatplotlib.pyplot as plt

import  numpy as np

#1.獲取數據

#用隨機數生成一個呈正太分佈的二維數據組,平均值是0,方差是1

n= 1024

X= np.random.normal(0,1,n)     # 所有x 的值

Y= np.random.normal(0,1,n)

#2.繪製散點圖

T= np.arctan2(Y,X)              # 獲取顏色數值

plt.scatter(X,Y,s=75,c= T,alpha=0.5)

#3.設置取值範圍和隱藏座標軸刻度

plt.xlim(-1.5,1.5)

plt.ylim(-1.5,1.5)

plt.xticks(())                  # 隱藏x軸

plt.yticks(())

plt.show()


圖7-1 scatter效果圖

8 Bar

8.1 Bar簡介

用來繪製柱狀圖,參數有:X,Y的值、背景顏色、邊框顏色等等。可以對每個柱狀設置標籤等等。

8.2 關鍵代碼

import matplotlib.pyplot as plt

import  numpy as np

 

# 1.獲取數值

n = 12              # 柱狀數量

X = np.arange(n)

Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)  # 均勻分佈的數據

Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)

 

# 2.繪圖

plt.bar(X,+Y1,facecolor = '#9999ff',edgecolor = 'white')

plt.bar(X,-Y2,facecolor = '#ff9999',edgecolor = 'white')

 

# 3.設置標註

for x,y in zip(X,Y1):

   plt.text(x, y + 0.02, '%.2f'%y, ha = 'center', va = 'bottom')

for x,y in zip(X,Y2):

    plt.text(x, -y - 0.02,'%.2f'%y, ha = 'center', va = 'top')

 

# 4.設置取值範圍,隱藏座標軸

plt.xticks(())

plt.yticks(())

plt.xlim(-.5, n)

plt.ylim(-1.25, 1.25)

plt.show()


圖8-1 Bar效果圖

9 線性圖、Figure、座標軸設置的完整例子

import matplotlib.pyplot as plt

import numpy as np

# 獲取數據集,範圍是從-1到1,之間的50個

x = np.linspace(-10 ,10 ,500)

# 繪製的函數

y1 = 2* x + 1

y2 = x**2 - 10

plt.figure(num=1)       # num = 1 設置的是figure窗體的序號

# ====================設置座標軸==========================

# 設置座標軸的取值範圍

plt.xlim(-10,10)

plt.ylim(-20,20)

#設置座標軸的標籤

plt.xlabel("x")

plt.ylabel("y")

 

# 設置X軸的刻度

new_xticks = np.linspace(-10,10,9)     # 範圍是-1~2,取5個值

new_yticks = np.linspace(-20,20,9)

plt.xticks(new_xticks)

plt.yticks(new_yticks)

 

# 設置顯示的座標軸

ax = plt.gca()     # 獲取邊框對象,gca: getcurrent axis

ax.spines['right'].set_color('none')        # 設置右邊和頂部的座標爲空白,只留下左邊和底部的

ax.spines['top'].set_color('none')

 

# 調整座標軸的位置

# 設置x座標刻度數組或名稱的位置,所有位置有:top,bottom,both,default,none

ax.xaxis.set_ticks_position('bottom')           # 設置x軸爲底部的邊框

# 設置x軸座標的位置,位置所有屬性:outward,axes,data

ax.spines['bottom'].set_position(('data',0))    # ax.spines['bottom'] 是指 x軸

ax.yaxis.set_ticks_position('left')             # 設置y軸爲左側的邊框

# 設置y座標刻度的位置,所有位置:left,right,both,default,none

ax.spines['left'].set_position(('data',0))

# ====================設置座標軸==========================

# 繪製圖像

l1, = plt.plot(x, y1, color='red',label = 'line')

l2, = plt.plot(x, y2, linestyle='--',label ='square line')

#================= 繪製legend 框===========================

# handles=[l1,l2,]表示要顯示在框中的線,labels=['a','b']表示在框中各個線的標籤,loc = 'best'設置框的位置,best,會自動將框放在數據最少的位置

#plt.legend(handles=[l1,l2,],labels=['a','b',],loc = 'best')

plt.legend(loc = 'best')

#================= 繪製legend 框===========================

# 最後show,才能繪製圖像

plt.show()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章