我們了解了常用的五種圖形:
那麼如何用Matplotlib和Seaborn來畫出它們。
Matplotlib:它在使用時靈活,可以定制化繪圖,但是時間上的花費也比較多。為了提高畫圖效率,包Seaborn基于Matplotlib底層開發,使用更少的代碼,将常用的可視化繪圖過程進行封裝,有時隻需要一行代碼便可以畫出我們想要的圖形,省時省力;此外seaborn還提供更為豐富的圖像以及3D圖形供我們使用。掌握兩個庫的使用可以滿足我們在不同情況下的需求。
散點圖散點圖(scatter plot),它将兩組數據(或者變量)的值顯示在二維坐标中,适合展示兩個變量之間的關系。
第一張散點圖用matplotlib繪制,第二張用seaborn繪制。我們可以看到兩張圖的區别:matplotlib默認情況下繪圖區呈現是一個長方形,而seaborn是正方形并且含有x軸和y軸的标簽;seaborn還展示散點圖還給出了兩組數據(變量)的分布情況。
說明:
折線圖能夠顯示數據的變化趨勢,在matplotlib使用plot函數繪制,而在seaborn使用 lineplot(x,y,data=None)函數;data是傳入的數據,一般是pandas中的DataFrame數據結構。
直方圖
直方圖( histogram )将橫坐标等分成一定數量的小區間,在小區間内填充圖形,它的高度是y值。特點是用來繪制連續性的數據,展示一組或者多組數據的分布狀況(統計)。
#數據準備:創建一個一維随機數組
import numpy as np
import random
import pandas as pd
a = np.random.randn(100)
x = pd.Series(a) # Series是pandas中用來存放一維數組的數據格式
# ⽤Matplotlib畫直⽅圖;
"""
使用plt.hist(x, bins=10)函數
參數x是一維數組,bins代表小區間的數量,默認是10。
"""
import matplotlib.pyplot as plt
plt.hist(x, bins=10)
plt.show()
# ⽤Seaborn畫直⽅圖:
'''
使用sns.distplot(x, bins=10, kde=True)函數
參數x是一維數組,bins代表直方圖中的小區間數量,kde代表顯示核密度估計,默認是True。
核密度估計是通過核函數來估計概率密度的方法。
'''
import seaborn as sns
sns.distplot(x, kde=False)
plt.show()
# 圖三顯示用核函數估計概率密度
sns.distplot(x, kde=True)
plt.show()
Matplotlib 運行結果:
Seaborn運行結果:
條形圖
通過直方圖可以看到變量的數值分布,那麼條形圖可以幫我們查看類别的特征。在條形圖中,長條形的長度表示類别的頻數,寬度表示類别。
條形圖(bar chart)繪制離散的數據,能夠一眼看出各個數據的大小,比較數據之間的差别。(統計/對比)
# 數據準備
x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [3, 5, 7, 2, 9]
# ⽤Matplotlib畫條形圖
# plt.bar(x, height)函數,參數x代表x軸的類别,height是y軸的數值
import matplotlib.pyplot as plt
plt.bar(x,y)
plt.show
# ⽤Seaborn畫條形圖
# sns.barplot(x=None,y=None,data=None)函數;參數data為DataFrame類型
import seaborn as sns
sns.barplot(x,y)
plt.show()
運行結果:
餅圖
餅圖(Pie Chart)可以顯示每個部分大小與總和之間的比例。在Python數據可視化中,主要用Matplotlib的pie函數來繪制。
# 數據準備,顯示各學曆人數的比例
nums = [20, 42, 18, 7, 6]
labels = ['High-school', 'Bachelor', 'Master', 'Ph.d', 'Other']
# pie(x, labels=None)函數,x代表繪制餅圖的數據,labels是缺省值,可以為餅圖添加标簽
import matplotlib.pyplot as plt
plt.pie(x=nums, labels=labels, autopct='%1.1f%%')
# autopct:設置圓内的文本 # '1.1f%'指圖片上顯示的數字格式,表示小數點前後位數# 另外兩個%%是format格式的符号plt.show()
運行結果:
小作業
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!