Matplotlib畫圖詳解

 1 from matplotlib import pyplot as plt 
 2 
 3 #調節圖形大小,寬,高
 4 plt.figure(figsize=(6,9))
 5 #定義餅狀圖的標籤,標籤是列表
 6 labels = [u'第一部分',u'第二部分',u'第三部分']
 7 #每一個標籤佔多大,會自動去算百分比
 8 sizes = [60,30,10]
 9 colors = ['red','yellowgreen','lightskyblue']
10 #將某部分爆炸出來, 使用括號,將第一塊分割出來,數值的大小是分割出來的與其餘兩塊的間隙
11 explode = (0.05,0,0)
12 
13 patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
14                                 labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
15                                 startangle = 90,pctdistance = 0.6)
16 
17 #labeldistance,文本的位置離遠點有多遠,1.1指1.1倍半徑的位置
18 #autopct,圓裏面的文本格式,%3.1f%%表示小數有三位,整數有一位的浮點數
19 #shadow,餅是否有陰影
20 #startangle,起始角度,0,表示從0開始逆時針轉,爲第一塊。通常選擇從90度開始比較好看
21 #pctdistance,百分比的text離圓心的距離
22 #patches, l_texts, p_texts,爲了獲得餅圖的返回值,p_texts餅圖內部文本的,l_texts餅圖外label的文本
23 
24 #改變文本的大小
25 #方法是把每個text遍歷。調用set_size方法設置它的屬性
26 for t in l_text:
27     t.set_size(30)
28 for t in p_text:
29     t.set_size(20)
30 # 設置x,y軸刻度一致,這樣餅圖才能是圓的
31 plt.axis('equal')
32 plt.legend()
33 plt.show()

 1.1圖像沒法顯示中文的緣由

matplotlib中無中文庫

解決辦法:每次編代碼時加上python

每次編代碼時都進行參數設置以下:

#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
#有中文出現的狀況,須要u'內容'

二、 散點圖詳解

import numpy as np
import matplotlib.pyplot as plt

# 數據個數
n = 1024
# 均值爲0, 方差爲1的隨機數
x = np.random.normal(0, 1, n)
y = np.random.normal(0, 1, n)

# 計算顏色值
color = np.arctan2(y, x)
# 繪製散點圖
plt.scatter(x, y, s = 75, c = color, alpha = 0.5)
# 設置座標軸範圍
plt.xlim((-1.5, 1.5))
plt.ylim((-1.5, 1.5))

# 不顯示座標軸的值
plt.xticks(())
plt.yticks(())

plt.show()

 

scatter

  • x,y 形如shape(n,)的數組,可選值,
  • s 點的大小(也就是面積)默認20
  • c 點的顏色或顏色序列,默認藍色。其它如c = 'r' (red); c = 'g' (green); c = 'k' (black) ; c = 'y'(yellow)
  • marker 形狀,可選值,默認是圓
    基本
    若是須要其餘的,可搜索matplotlib的官網,在官網中搜索markers,選擇第一個結果。數組

     
    import numpy as np
    import matplotlib.pyplot as plt
    N = 1000
    x = np.random.randn(N)
    y = np.random.randn(N)
    color = ['r','y','k','g','m']
    plt.scatter(x, y,c=color,marker='>')
    plt.show()
    

      

    示例

  • alpha:標量,可選,默認值:無, 0(透明)和1(不透明)之間的alpha混合值dom

    import numpy as np
    import matplotlib.pyplot as plt
    N = 1000
    x = np.random.randn(N)
    y = np.random.randn(N)
    plt.scatter(x, y,alpha=0.5)
    plt.show()
    

      

    示例alpha = 0.5
  • edgecolors,顧名思義,邊緣顏色或顏色序列,可選值,默認值:None函數

  • import numpy as np
    import matplotlib.pyplot as plt
    N = 1000
    x = np.random.randn(N)
    y = np.random.randn(N)
    plt.scatter(x, y,alpha=0.5,edgecolors= 'white') #edgecolors = 'w',亦可
    plt.show()
    

      

     
  • 與上圖對比

三、直方圖spa

 

直方圖與條形圖的區別:
條形圖是用條形的長度表示各種別頻數的多少,其寬度(表示類別)則是固定的;
直方圖是用面積表示各組頻數的多少,矩形的高度表示每一組的頻數或頻率,寬度則表示各組的組距,所以其高度與寬度均有意義。
因爲分組數據具備連續性,直方圖的各矩形一般是連續排列,而條形圖則是分開排列。
條形圖主要用於展現分類數據,而直方圖則主要用於展現數據型數據。
示例代碼:
[python] view plain copy
#機率分佈直方圖  
#高斯分佈  
#均值爲0  
mean = 0  
#標準差爲1,反應數據集中仍是分散的值  
sigma = 1  
x=mean+sigma*np.random.randn(10000)  
fig,(ax0,ax1) = plt.subplots(nrows=2,figsize=(9,6))  
#第二個參數是柱子寬一些仍是窄一些,越大越窄越密  
ax0.hist(x,40,normed=1,histtype='bar',facecolor='yellowgreen',alpha=0.75)  
##pdf機率分佈圖,一萬個數落在某個區間內的數有多少個  
ax0.set_title('pdf')  
ax1.hist(x,20,normed=1,histtype='bar',facecolor='pink',alpha=0.75,cumulative=True,rwidth=0.8)  
#cdf累計機率函數,cumulative累計。好比須要統計小於5的數的機率  
ax1.set_title("cdf")  
fig.subplots_adjust(hspace=0.4)  
plt.show()  

  

運行結果爲:
相關文章
相關標籤/搜索