我的Python分析成長之路10
- 2020 年 1 月 22 日
- 筆記
matplot數據可視化基礎
製作提供信息的可視化(有時稱作繪圖)是數據分析中最重要任務之一。
1.圖片(畫布)與子圖
plt.figure :創建一張空白的圖片,可以指定圖片的大小、像素。
figure.add_subplot:添加子圖,可以指定子圖的行數、列數和選中圖片的編號。
如果使用plt.subplots(),它創建了一張圖片,然後返回包含了已生成子圖對象的Numpy數組
plt.subplots選型:
nrow:子圖的行數
ncols:子圖的列數
sharex:所有子圖使用相同的x軸刻度
sharey:所有子圖使用相同的y軸刻度
1 import numpy as np 2 import matplotlib.pyplot as plt 3 plt.rcParams["font.sans-serif"] = "SimHei" #設置中文顯示 4 plt.rcParams["axes.unicode_minus"] = False #設置正常符號 5 #沒有子圖的繪圖 6 x = np.arange(0,1,0.01) 7 y = x**2 8 y2 = x**4 9 plt.plot(x,y) 10 plt.plot(x,y2) 11 plt.show() 12 #有子圖的繪製方法 13 fig = plt.figure(figsize=(8,5)) 14 ax1 = fig.add_subplot(2,1,1) 15 ax1.plot(x,y) 16 ax2 = fig.add_subplot(2,1,2) 17 ax2.plot(x,y2) 18 plt.show() 19 #用plt.subplots方法 20 fig,axes = plt.subplots(2,1,sharex=True) 21 axes[0].plot(x,y) 22 axes[1].plot(x,y2) 23 plt.show()
2.添加各類標籤和圖例的常用函數
plt.title 為當前圖形添加標題,可以指定標題的名稱、位置、顏色、大小等參數
plt.xlabel 為當前圖形添加x軸名稱,可以指定位置、顏色、大小等參數
plt.ylabel:為當前圖形添加y軸名稱,可以指定位置、顏色、字體大小等參數
plt.xlim:指定當前圖形x軸的範圍,只能確定一個數值區間,而無法使用字符串標識
plt.ylim:指定當前圖形y軸的範圍,只能確定一個數值區間,而無法使用字符串標識
plt. xticks:指定x軸數目與取值
plt.yticks:指定y軸刻度的數目與取值
plt.legend:根據當前圖形的圖例,可以指定圖例的大小、位置、標籤。
plt.savefig("filename"):保存圖片
text/arrow/annote方法添加註釋和文本
1 import numpy as np 2 import matplotlib.pyplot as plt 3 plt.rcParams["font.sans-serif"] = "SimHei" 4 plt.rcParams["axes.unicode_minus"] = False 5 x = np.arange(0,1,0.01) 6 y1 = x**2 7 y2 = x**4 8 plt.plot(x,y1,"g--") 9 plt.plot(x,y2,"b-") 10 plt.xlabel("x") #設置x軸類標 11 plt.ylabel("y") #設置y軸類標 12 plt.xlim([0,1]) #設置x範圍 13 plt.ylim([0,1]) #設置y範圍 14 plt.title("x**2和x**4函數") #添加標題 15 plt.legend(["Y1","Y2"],loc="best") # 16 plt.show()
View Code
3.設置pyplot的rc參數
lines.linestyle:線條樣式
lines.linewidth:線條寬度
lines.marker:線條上的點的形狀
lines.markersize:點的大小
4.分析特徵間的相互關係
1.柱狀圖:
plot.bar():繪製垂直方向上的柱狀圖
plot.barh():繪製水平方向上的柱狀圖
1 import matplotlib.pyplot as plt 2 import pandas as pd 3 fig,axes = plt.subplots(2,1) 4 data = pd.Series(np.random.rand(16),index=list("abcdefghijklmnop")) 5 data.plot.bar(ax=axes[0],color='k') 6 data.plot.barh(ax=axes[1],color="r") 7 plt.show() 8 df = pd.DataFrame(np.random.rand(6,4),index=["one","two","three","four","five","six"], 9 columns=pd.Index(["a","b","c","d"],name="Genus")) 10 df.plot.bar() 11 df.plot.barh(stacked=True) 12 plt.show()
2.直方圖和密度圖:
直方圖是一種條形圖,用於給出值頻率的離散顯示。數據被分隔成離散的,均勻間隔的箱,並且繪製每個箱中數據點的數量.一般用橫軸表示 數據類型,用縱軸表示數量或者佔比。
plot.hist()
密度圖是一種與直方圖相關的圖表類型,它通過計算可能產生觀測數據的連續概率分佈估計而產生的。 密度圖也稱為內核密度估計圖 (KED)
plot.density()
seabon.distplot()可以繪製直方圖和連續密度估計
1 t seaborn as sns 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 data1 = pd.Series(np.random.normal(0,1,size=200)) 5 data2 = pd.Series(np.random.normal(10,2,size=200)) 6 data3 = pd.Series(np.concatenate([data1,data2])) 7 # print(data3) 8 sns.distplot(data3,bins=100,color="k") 9 plt.show()
3.散點圖
散點圖,又稱散點分佈圖,是一個以一個特徵為橫坐標,以另一個特徵為縱坐標,利用坐標點的分佈狀態反映特徵間的統計關係的一陣圖形。主要用於分析特徵間的相互關係,散點圖可以提供兩類關鍵信息。1.特徵之間是否存在數值或數量之間的關聯趨勢,關聯趨勢是線性還是非線性的。2.如果從某一個點或者某幾個點偏離大多數點,則這些點就是離群值,從而分析這些離群值是否在建模分析中產生很大的關係。散點圖通過散點的疏密程度和變化趨勢表示兩個特徵的數量關係。
plt.scatter(x,y,s=None,c=None,marker=None) c:代表顏色,marker:繪製點的類型
seaborn.pairplot(data,diag_kind="kde",{「plot_kws」:0.2}) 可以支持在對角線上放置每個變量的直方圖或密度估計圖
4.折線圖
折線圖是一種將數據點按照順序連接起來的圖形。查看因變量y隨自變量x改變的趨勢,最適合於顯示隨時間而變化的連續數據.
plt.plot()
5.餅圖
餅圖是將各項大小與各項總和的比例顯示在一張「餅」上,以「餅」的大小確定所佔的比例。
plt.pie(x,explode,labels,autopct,octdistance,labeldistance,radius)
explode:設定各項距離圓心n個半徑
label:餅圖的標籤
autupct:指定數值的顯示方式
6.箱型圖
箱型圖也稱箱須圖,其繪製需要常用的統計量,能提供有關數據位置和分散情況的關鍵信息,尤其在比較不同特徵時,更可表現其分散程度 差異。箱型圖利用數據中的5個統計量(最小值、下四分位數、中位數、上四分位數、和最大值)來描述數據。
plt.boxplot(x,menline) meanline:是否顯示中值