Python數據分析matplotlib可視化之繪圖

Matplotlib是一個基於python的2D畫圖庫,可以用python腳本方便的畫出折線圖,直方圖,功率譜圖,散點圖等經常使用圖表,並且語法簡單。python

Python中經過matplotlib模塊的pyplot子庫來完成繪圖。Matplotlib可用於建立高質量的圖表和圖形,也能夠用於繪製和可視化結果。matplotlib是Python優秀的數據可視化第三方庫,matplotlb.pyplot是繪製種類可視化圖形的命令子庫,至關於快捷方式 import matplotlib.pyplot as plt.數組

一、線形圖dom

線性圖是最基本的圖表類型,經常使用於繪製連續的數據。經過繪製線形圖,能夠表現出數據的一種趨勢變化。函數

Matplotlib的plot(X,Y)用來繪製線形圖,在參數中傳入X和Y的座標便可。其中,X和Y軸座標的數據格式能夠是列表、數組和Series.工具

例1:座標數據格式爲series字體

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data={'name':['Tom','Peter','Lucy','Max'],
 'sex':['female','female','male','male'],
 'math':[78,79,83,92],
 'city':['北京','上海','廣州','北京']
 }
df=pd.DataFrame(data)
print(df)
 #DataFrame數據的行索引做爲X軸,math列索引做爲Y軸
plt.plot(df.index,df['math'],color='red',linestyle='-',linewidth=3,marker='D')
 #經過plot函數的color參數能夠指定線條的顏色

linestyle參數能夠指定線條的形狀,spa

linewidth參數可指定線條的寬度,code

marker參數可對座標點進行標記(默認狀況下,座標點是沒有標記的),orm

結果:
 name sex math city #建立一個DataFrame數據
0 Tom female 78 北京
1 Peter female 79 上海
2 Lucy male 83 廣州
3 Max male 92 北京
,

注意: 顏色設置要放在線條和點的樣式的前面 ,顏色、線條和點的樣式能夠放置於格式字符串。對象

如:plt.plot(df.index,df[‘math’],‘co-’)
運行結果以下:
在這裏插入圖片描述
2. 柱狀圖

2.1 繪製柱狀圖主要是使用matplotlib的 bar函數 :

bar函數的color參數能夠設置柱狀圖的填充顏色,

alpha參數能夠設置透明度,

例如:

import matplotlib.pyplot as plt
data=[23,85,72,43,52]
plt.bar([1,2,3,4,5],data,color='royalblue',alpha=0.7)

運行結果:
在這裏插入圖片描述
bottom參數用於設置柱狀圖的高度,以此繪製堆積柱狀圖;

width參數 用於設置柱狀圖的寬度, 以此能夠繪製並列柱狀圖 。

grid函數用於繪製格網,經過對參數的個性化設置,能夠繪製出個性的格網

例如:

import numpy as np
 import matplotlib.pyplot as plt
 data1=[23,85,72,43,52]
 data2=[42,35,21,16,9]
 width=0.3
 plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7,width=width)
 plt.bar(np.arange(len(data2))+width,data2,color='green',alpha=0.7,width=width)
 plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

運行結果:
在這裏插入圖片描述

Bar函數的經過barh函數能夠繪製水平柱狀圖

import numpy as np
 import matplotlib.pyplot as plt
 data1=[23,85,72,43,52]
 plt.barh(np.arange(len(data1)),data1,color='green',alpha=0.5)

如圖所示:
在這裏插入圖片描述

2.2 刻度與標籤:

現實中的柱狀圖的X軸是有刻度標籤的,上述實例中未設置。在matplotlib中,

經過 xticks函數 設置圖標的X軸的刻度和刻度標籤, yticks函數 設置y軸的刻度和標籤。

經過xlabel 和 ylabel 方法給X軸和Y軸添加標籤,

經過title方法爲圖表添加標題

例如:

import numpy as np
 import matplotlib.pyplot as plt
 data1=[23,85,72,43,52]
 labels=['A','B','C','D','E']
 plt.xticks(range(len(data1)),labels) #設置刻度和標籤
 plt.xlabel('Class') #plt.xlabel、ylabel、title方法分別給X軸和Y軸,圖標題添加標籤。
 plt.ylabel('Amounts')
 plt.title('Example')
 #plt.bar(range(len(data1)),data)
 plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7)
 plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

運行結果:
在這裏插入圖片描述

圖例是標識圖表元素的重要工具, 在bar函數中傳入label參數表示圖例名稱,經過legend函數便可繪製出圖例。

data1=[23,85,72,43,52]
data2=[42,35,21,16,9]
width=0.3
plt.bar(np.arange(len(data1)),data1,width=width,label='one')
plt.bar(np.arange(len(data2))+width,data2,width=width,label='two')
plt.legend()

結果以下:
在這裏插入圖片描述
2.4 文本註解:

例如:在柱狀圖中加入文本數字,能夠很清楚的知道每一個類別的數量。經過text函數能夠在指定的座標(x,y)上加入文本註釋

data=[23,85,72,43,52]
labels=['A','B','C','D','E']
plt.xticks(range(len(data)),labels) #設置刻度和標籤
plt.xlabel('Class') 
plt.ylabel('Amounts')
plt.title('Example')
plt.bar(range(len(data)),data)
for x,y in zip(range(len(data)),data):
plt.text(x,y,y,ha='center',va='bottom') #文本註解 # 第一個參數是x軸座標
 # 第二個參數是y軸座標
 # 第三個參數是要顯式的內容

在這裏插入圖片描述
3.散點圖:

Matpltlib中 scatter函數能夠用來繪製散點圖,傳入X和Y軸座標。Scatter(X,Y)

利用Numpy建立一組隨機數

import numpy as np
import matplotlib.pyplot as plt
X=np.random.randn(100)
Y=np.random.randn(100)
plt.scatter(X,Y,color='red',marker='D')

散點圖:
在這裏插入圖片描述
4. 直方圖

matplotlib的 hist()函數 用來繪製直方圖。

直方圖與條形圖的區別:

直方圖是用面積表示各頻數的多少,矩形的高度表示每一組的頻數或頻率,寬度則表示各組的組距,所以其寬度與高度均有意義;

條形圖(柱狀圖)是用條形的長度表示各種頻數的多少,其寬度是固定的。

因爲分組數據具備連續性,直方圖的各矩形一般是連續排列,而條形圖是分開排列;條形圖主要是用於展現分類數據,而直方圖則主要用於展現數據型數據。

x=np.random.normal(size=100)
plt.hist(x,bins=30)

在這裏插入圖片描述
5. 自定義設置

Matplotlib的圖像位於Figure對象中,實際上就是建立了一個空的圖像窗口。可經過figure函數能夠建立一個新的Figure,用於繪製圖表

fig=plt.figure(figsize=(10,6)) #figsize參數能夠設置圖表(整個圖)的長寬比

ax1=fig.add_subplot(2,2,1) #不能經過空figure繪圖,必須用add_subplot()建立一個或者多個子subplot繪圖區才能繪圖

意思是:繪製2*2兩行兩列共4個子subplot圖像

ax2=fig.add_subplot(2,2,2) # 在建立Figure對象過程當中,經過add_subplot函數建立子圖,用於繪製圖形

ax3=fig.add_subplot(2,2,3)

years=[1950,1960,1970,1980,1990,2000,2010]

gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]

ax1.scatter(years,gdp) #選用不一樣的ax變量,則能夠在對應的subplot子圖中繪圖(散點圖、線形圖、柱狀圖)

ax2.plot(years,gdp)

ax3.bar(years,gdp)
在這裏插入圖片描述
plt.subplots能夠輕鬆的建立子圖,而axes的索引類型相似於二維數組,這樣就能夠對指定的子圖進行繪製。Subplot函數中有3個參數:垂直繪圖的數量、水平繪圖的數量以及表示繪圖位置的索引(基於行進行計算)

fig,axes=plt.subplots(2,2,figsize=(10,6)) 
axes[1,0].plot(years,gdp)
axes[0,0].scatter(years,gdp)
axes[0,1].bar(years,gdp)
axes[1,1].hist(years,gdp)

在這裏插入圖片描述
注意:當沒有設置figsize時,建立多子圖會顯得擁擠。經過 plt…subplot_adjust方法能夠設置子圖的間距修改子圖之間的間距(增長額外的空間以調整兩個子圖之間的距離)

subplots__adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None) ,其中前4個參數用於設置subplot子圖的外圍邊距,wspace和hapace參數設置用於設置subplot子圖間的邊距。

fig,axes=plt.subplots(2,2) #未設置figsize時,默認狀況下,各sudplot子圖間都會留有必定的間距。
在這裏插入圖片描述

years=[1950,1960,1970,1980,1990,2000,2010]
gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]
fig,axes=plt.subplots(2,2)
plt.subplots_adjust(wspace=0.3,hspace=0.3)
axes[1,0].plot(years,gdp)
axes[0,0].scatter(years,gdp)
axes[0,1].bar(years,gdp)
axes[1,1].hist(years,gdp)

在這裏插入圖片描述
6. 樣式與字體:

Matplotlib自帶了一些樣式供用戶使用,如 經常使用的ggplot樣式,經過 plt.style.use(‘ggplot’) 函數便可調用該樣式繪圖。 **

Matplotlib默認爲英文字體,若是繪製中出現漢字就會亂碼,所以須要指定matplotlib的默認字體,這樣就能夠解決亂碼的問題,

plt.rcParams[‘font.sans-serif’]=[‘simhei’] #指定默認字體

plt.rcParams[‘axes.unicode_minus’]=False #解決保存圖像時負號‘-’顯示爲方塊的問題
在這裏插入圖片描述

相關文章
相關標籤/搜索