pyhton中matplotlib箱線圖的繪制(matplotlib雙軸圖、箱線圖、散點圖以及相關系數矩陣圖))


//2019.07.23

1、箱形圖,又稱為盒式圖一般可以很好地反映出數據分布的特征,也可以進行多項數據之間分布特征的比較,它主要包含五個基礎數據:中位數,兩個上下分位數以及上下邊緣線數據

其中的一些參數具體含義及其計算過程如下:


2、雙軸圖的繪制代碼:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["font.sans-serif"]=["SimHei"] #輸出圖像的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線里的負號
import warnings
warnings.filterwarnings("ignore") #忽略相應的警告信息
df=pd.read_excel("D:/Byrbt2018/Study/Python數據分析課程+練習+講解/Python數據分析課程+練習+講解/作業/作業4/作業4/酒店數據1.xlsx")#導入w我們的表格數據文件
print(df)
print(df.index)
print(df.columns)
d=df[:5]
print(d)
2、#雙軸圖的繪制.twinx()
import matplotlib.mlab as mlab
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(1,1,1)
n,bins,patches=ax1.hist(df["評分"],bins=100,color="m")

ax1.set_ylabel("電影數量",fontsize=15)
ax1.set_xlabel("評分",fontsize=15)
ax1.set_title("頻率分布直方圖",fontsize=20)

y=mlab.normpdf(bins,df["評分"].mean(),df["評分"].std()) #生成正態分布函數
ax2=ax1.twinx() #定義新的雙軸圖函數
ax2.plot(bins,y,"b--")
ax2.set_ylabel("概率分布",fontsize=15)

3、#散點圖的繪制plt.scatter(x,y)繪制散點圖
x=df["評分人數"][::10]
y=df["評分"][::10] #隔10個點進行選取數據點
plt.figure(2)
plt.scatter(x,y,color="r",marker="p") #散點圖函數圖像輸出
plt.xlabel("評分",fontsize=15)
plt.ylabel("評分人數",fontsize=15)
plt.title("酒店評分與人數散點圖",fontsize=20)
4、#箱線圖的繪制
d=df[df.類型=="商務出行"]["評分"]
print(d)
plt.figure(4)
plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})

#箱線圖的格式設置和調整
plt.title("商務出行酒店的評分數據分布",fontsize=17)
#多組數據的箱線圖
d1=df[df.類型=="浪漫情侶"]["評分"]
d2=df[df.類型=="地鐵周邊"]["評分"]
d3=df[df.類型=="休閑度假"]["評分"]
d4=df[df.類型=="海濱風光"]["評分"]
d5=df[df.類型=="交通方便"]["評分"]
d6=df[df.類型=="商務出行"]["評分"]
plt.figure(5)
plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侶","地鐵周邊","休閑度假","海濱風光","交通方便","商務出行"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"}
,vert=True) #多組數據分布特征比較,vert決定了整體圖像的橫向與縱向
#坐標軸的編輯與改變
ax=plt.gca() #坐標軸的編輯與改變
ax.patch.set_facecolor("white") #設置坐標軸的背景顏色
ax.patch.set_alpha(0.3) #設置配色和透明度
plt.title("不同類型酒店的評分箱線圖",fontsize=20)
plt.xlabel("酒店類型",fontsize=15)
plt.ylabel("評分大小",fontsize=15)
#相關系數矩陣圖
df1=df[["評分","評分人數"]]
df1["排序"]=np.random.randint(1,100,396)
print(df1)
r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))
#對於多個數據減的散點圖繪制函數參數設置,diagonal表示對角線圖像kde/hist(數據密度圖或者直方圖選擇)

5、#相關系數熱力圖
import seaborn as sns
corr=df1.corr()
corr=abs(corr)
ax=plt.figure(figsize=(10,8))
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)

plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("數據名稱",fontsize=15)
plt.ylabel("數據名稱",fontsize=15)
plt.title("不同數據間相關系數矩陣圖",fontsize=20)
plt.show()

整體運行代碼如下:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["font.sans-serif"]=["SimHei"] #輸出圖像的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線里的負號
import warnings
warnings.filterwarnings("ignore") #忽略相應的警告信息
df=pd.read_excel("D:/Byrbt2018/Study/Python數據分析課程+練習+講解/Python數據分析課程+練習+講解/作業/作業4/作業4/酒店數據1.xlsx")#導入w我們的表格數據文件
print(df)
print(df.index)
print(df.columns)
d=df[:5]
print(d)
#雙軸圖的繪制.twinx()
import matplotlib.mlab as mlab
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(1,1,1)
n,bins,patches=ax1.hist(df["評分"],bins=100,color="m")

ax1.set_ylabel("電影數量",fontsize=15)
ax1.set_xlabel("評分",fontsize=15)
ax1.set_title("頻率分布直方圖",fontsize=20)

y=mlab.normpdf(bins,df["評分"].mean(),df["評分"].std()) #生成正態分布函數
ax2=ax1.twinx() #定義新的雙軸圖函數
ax2.plot(bins,y,"b--")
ax2.set_ylabel("概率分布",fontsize=15)

#散點圖的繪制plt.scatter(x,y)繪制散點圖
x=df["評分人數"][::10]
y=df["評分"][::10] #隔10個點進行選取數據點
plt.figure(2)
plt.scatter(x,y,color="r",marker="p") #散點圖函數圖像輸出
plt.xlabel("評分",fontsize=15)
plt.ylabel("評分人數",fontsize=15)
plt.title("酒店評分與人數散點圖",fontsize=20)

#箱線圖的繪制
d=df[df.類型=="商務出行"]["評分"]
print(d)
plt.figure(4)
plt.boxplot(d,whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"})
#箱線圖的格式設置和調整
plt.title("商務出行酒店的評分數據分布",fontsize=17)
#多組數據的箱線圖
d1=df[df.類型=="浪漫情侶"]["評分"]
d2=df[df.類型=="地鐵周邊"]["評分"]
d3=df[df.類型=="休閑度假"]["評分"]
d4=df[df.類型=="海濱風光"]["評分"]
d5=df[df.類型=="交通方便"]["評分"]
d6=df[df.類型=="商務出行"]["評分"]
plt.figure(5)
plt.boxplot([d1,d2,d3,d4,d5,d6],labels=["浪漫情侶","地鐵周邊","休閑度假","海濱風光","交通方便","商務出行"],whis=1.5,flierprops={"marker":"o","markerfacecolor":"r","color":"g"},patch_artist=True,boxprops={"color":"k","facecolor":"g"}
,vert=True) #多組數據分布特征比較,vert決定了整體圖像的橫向與縱向
#坐標軸的編輯與改變
ax=plt.gca() #坐標軸的編輯與改變
ax.patch.set_facecolor("white") #設置坐標軸的背景顏色
ax.patch.set_alpha(0.3) #設置配色和透明度
plt.title("不同類型酒店的評分箱線圖",fontsize=20)
plt.xlabel("酒店類型",fontsize=15)
plt.ylabel("評分大小",fontsize=15)
#相關系數矩陣圖
df1=df[["評分","評分人數"]]
df1["排序"]=np.random.randint(1,100,396)
print(df1)
r1=pd.scatter_matrix(df1,diagonal="kde",color="k",alpha=0.3,figsize=(10,10))
#對於多個數據減的散點圖繪制函數參數設置,diagonal表示對角線圖像kde/hist

#相關系數熱力圖
import seaborn as sns
corr=df1.corr()
corr=abs(corr)
ax=plt.figure(figsize=(10,8))
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel("數據名稱",fontsize=15)
plt.ylabel("數據名稱",fontsize=15)
plt.title("不同數據間相關系數矩陣圖",fontsize=20)
plt.show()
輸出結果如下:

 

 
        

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM