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()
解決辦法:每次編代碼時加上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()
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()
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()