Python-matplotlib入門--基礎圖表的繪製(持續更新中)

通過前面幾篇博客的大致內容,我們也能大致學會繪製圖像,然後在我們做數據分析,統計分析的時候,我們需要用特定的圖像來展示特定的數據,從而達到可視化的效果,讓結果更加直觀,這篇博客我將會詳細介紹一下每一種圖例。

實例目錄:

1、線性圖
2、直方圖
3、條狀圖
4、多序列條狀圖
5、餅狀圖
6、散點圖
7、箱線圖
8、極線圖
9、棉棒圖
10、誤差棒圖
首先需要區分清楚概念:直方圖和條形圖。
條形圖:條形圖用長條形表示每一個類別,長條形的長度表示類別的頻數,寬度表示表示類別。
直方圖:直方圖是一種統計報告圖,形式上也是一個個的長條形,但是直方圖用長條形的面積表示頻數,所以長條形的高度表示頻數組距頻數組距,寬度表示組距,其長度和寬度均有意義。當寬度相同時,一般就用長條形長度表示頻數。
直方圖一般用來描述等距數據,柱狀圖一般用來描述名稱(類別)數據或順序數據。直觀上,直方圖各個長條形是銜接在一起的,表示數據間的數學關係;條形圖各長條形之間留有空隙,區分不同的類。

1.線性圖

這裏我參考了官網的圖例。

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
plt.plot(t, s)
plt.title("About as simple as it gets, folks")
plt.xlabel("time (s)")
plt.ylabel("voltage (mV)")
ax.grid()
plt.show()

在這裏插入圖片描述
這個就實現了線性圖的繪製,不需要用到其他函數。但下面幾種都有它對應的函數。

2.直方圖

直方圖用到的函數是plt.hist()函數,plt,hist()

    matplotlib.pyplot.hist(  
    x, bins=10, range=None, normed=False,   
    weights=None, cumulative=False, bottom=None,   
    histtype=u'bar', align=u'mid', orientation=u'vertical',   
    rwidth=None, log=False, color=None, label=None, stacked=False,   
    hold=None, **kwargs)  

一些常用的參數
繪製直方圖
data:必選參數,繪圖數據
bins:直方圖的長條形數目,可選項,默認爲10
normed:是否將得到的直方圖向量歸一化,可選項,默認爲0,代表不歸一化,顯示頻數。normed=1,表示歸一化,顯示頻率。
facecolor:長條形的顏色
edgecolor:長條形邊框的顏色
alpha:透明度

#直方圖繪製
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)#隨機種子
m,sigma = 50,5 #均值和標準差
a = np.random.normal(m,sigma,size=100)#一百個元素

#該函數參數爲直方圖上面的信息,最後兩個參數爲顏色的設置
#第二個參數爲 bin:生成直方圖的個數
#normed=1表示出現的概率,=0,表示出現的個數
plt.hist(a,40,normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
plt.title('test')
plt.show()

在這裏插入圖片描述

3.柱狀圖

條形圖用plt.bar()繪製,其中一些常用的參數:

  1. left:x軸的位置序列,一般採用arange函數產生一個序列;
  2. height:y軸的數值序列,也就是柱形圖的高度,一般就是我們需要展示的數據;
  3. alpha:透明度
  4. width:爲柱形圖的寬度,一般這是爲0.8即可;
  5. color或facecolor:柱形圖填充的顏色;
  6. edgecolor:圖形邊緣顏色
  7. label:解釋每個圖像代表的含義
  8. linewidth or linewidths or lw:邊緣or線的寬度
index = np.arange(5)
values = [5,3,2,4,5]
plt.bar(index,values,color='y',alpha=0.7)
plt.title('bar')
plt.xlabel("x")
plt.ylabel("y")
plt.xticks(index+0.4,['s','m','i','l','e'])#設置刻度標籤
plt.show()

在這裏插入圖片描述
我們還可以看一個多個序列表示的柱狀圖:

#多序列條狀圖
index = np.arange(5)
values1 = [5,3,2,4,5]
values2 = [6,5,3,5,7]
values3 = [7,4,4,6,8]
b = 0.25#設置b爲調控距離
plt.axis([0,5,0,10])#x軸起止,y軸起止座標
plt.bar(index,values1,b,color='r',alpha=0.7)
plt.bar(index+b,values2,b,color='y',alpha=0.7)
plt.bar(index+2*b,values3,b,color='b',alpha=0.7)
plt.title('A bar chart',fontsize=15)#標題及字體
plt.xticks(index+b,['s','m','i','l','e'])#設置刻度標籤
plt.show()

在這裏插入圖片描述

4.條形圖

1.水平條形圖
常用barh()函數,參數:barh ( bottom , width , height =0.8, left =0, ** kwargs )其中這些參數:
bottom: Bars 的垂直位置的底部邊緣
width: Bars 的長度
height: bars 的高度
left: bars 左邊緣 x 軸座標值
color: bars 顏色
edgecolor: bars 邊緣顏色
linewidth: bar 邊緣寬度;None 表示默認寬度;0 表示不 i 繪製邊緣
xerr: 若不爲 None,將在 bar 圖上生成 errobars
yerr: 若不爲 None,將在 bar 圖上生成 errobars
ecolor: 指定 errorbar 顏色
capsize: 指定 errorbar 的頂部(cap)長度
align: ‘edge’ (默認) | ‘center’:‘edge’以底部爲準對齊;‘center’以 y 軸作爲中心?
log: [False|True] False (默認),若爲 True,使用 log 座標

price = [39.5, 39.9, 45.4, 38.9, 33.34]
"""
繪製水平條形圖方法barh
參數一:y軸
參數二:x軸
"""
plt.barh(range(5), price, height=0.7, color='steelblue', alpha=0.8)      # 從下往上畫
plt.yticks(range(5), ['亞馬遜', '噹噹網', '中國圖書網', '京東', '天貓'])
plt.xlim(30,47)
plt.xlabel("價格")
plt.title("不同平臺圖書價格")
for x, y in enumerate(price):
    plt.text(y + 0.2, x - 0.1, '%s' % y)
plt.show()

在這裏插入圖片描述

5.餅圖

在python中用的是plt.pie()函數,這個函數的形式如下:

def pie(x, explode=None, labels=None, colors=None, autopct=None,
        pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,
        radius=None, counterclock=True, wedgeprops=None, textprops=None,
        center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)

想具體瞭解這個函數用法可以看看這個博客。下面我給出一個例子,大家可以參考一下

label_list = ["第一部分", "第二部分", "第三部分"]    # 各部分標籤
size = [55, 35, 10]    # 各部分大小
color = ["red", "green", "blue"]     # 各部分顏色
explode = [0.05, 0, 0]   # 各部分突出值
"""
繪製餅圖
explode:設置各部分突出
label:設置各部分標籤
labeldistance:設置標籤文本距圓心位置,1.1表示1.1倍半徑
autopct:設置圓裏面文本
shadow:設置是否有陰影
startangle:起始角度,默認從0開始逆時針轉
pctdistance:設置圓內文本距圓心距離
返回值
l_text:圓內部文本,matplotlib.text.Text object
p_text:圓外部文本
"""
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
plt.axis("equal")    # 設置橫軸和縱軸大小相等,這樣餅纔是圓的
plt.legend()
plt.show()

在這裏插入圖片描述

散點圖

一般用plt.scatter()函數,具體函數用法以及參數,我們過多解釋,可以看看這篇博客。給大家舉一個具體的實例。

A1=np.array([0,0])
B1=np.array(([2,0],[0,2]))
#以 A1爲均值,B1爲協方差矩陣,生成正態分佈的隨機數
C1=np.random.multivariate_normal(A1,B1,10)
C2=np.random.multivariate_normal(A1+0.2,B1+0.2,10)
#畫布的大小爲長8cm高6cm
plt.figure(figsize=(8,6))
#畫圖吧,s表示點點的大小,c就是color嘛,marker就是點點的形狀哦o,x,*><^,都可以啦
#alpha,點點的亮度,label,標籤啦
plt.scatter(C1[:,0],C1[:,1],s=30,c='red',marker='o',alpha=0.5,label='C1')
plt.scatter(C2[:,0],C2[:,1],s=30,c='blue',marker='x',alpha=0.5,label='C2')
plt.title('basic scatter plot ')
plt.xlabel('variables x')
plt.ylabel('variables y')
plt.legend(loc='upper right')#這個必須有,沒有你試試看
plt.show()

在這裏插入圖片描述

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