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中無中文庫
解決辦法:每次編代碼時加上
每次編代碼時都進行參數設置如下: #coding:utf-8 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號 #有中文出現的情況,需要u'內容'
2、 散點圖詳解
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()

- 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混合值
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()

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

3、直方圖
直方圖與條形圖的區別: 條形圖是用條形的長度表示各類別頻數的多少,其寬度(表示類別)則是固定的; 直方圖是用面積表示各組頻數的多少,矩形的高度表示每一組的頻數或頻率,寬度則表示各組的組距,因此其高度與寬度均有意義。 由於分組數據具有連續性,直方圖的各矩形通常是連續排列,而條形圖則是分開排列。 條形圖主要用於展示分類數據,而直方圖則主要用於展示數據型數據。
示例代碼:
[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()
運行結果為:
