Python數(shù)據(jù)可視化:用Seaborn繪制高端玩家版散點(diǎn)圖
↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個(gè)G的驚喜
散點(diǎn)圖是用于研究?jī)蓚€(gè)變量之間關(guān)系的經(jīng)典的和基本的圖表。如果數(shù)據(jù)中有多個(gè)組,則可能需要以不同顏色可視化每個(gè)組。
今天我們畫普通散點(diǎn)圖、邊際分布線性回歸散點(diǎn)圖、散點(diǎn)圖矩陣、帶線性回歸最佳擬合線的散點(diǎn)圖
本文示例多是來(lái)自官方文檔,這里我只是做一下整理,讓大家知道散點(diǎn)圖的不同玩法,不要再繪制老掉牙的普通玩家版散點(diǎn)圖了。
普通玩家繪制的散點(diǎn)圖
在 matplotlib 中,可以使用 plt.scatterplot() 方便地執(zhí)行此操作。
import?numpy?as?np
import?matplotlib.pyplot?as?plt
#?Fixing?random?state?for?reproducibility
np.random.seed(19680801)
N?=?50
x?=?np.random.rand(N)
y?=?np.random.rand(N)
colors?=?np.random.rand(N)
area?=?(30?*?np.random.rand(N))**2??#?0?to?15?point?radii
plt.scatter(x,?y,?s=area,?c=colors,?alpha=0.5)
plt.show()
matplotlib散點(diǎn)圖升級(jí)版
散點(diǎn)的大小、形狀、顏色和透明度都是可以修改的,來(lái)看一個(gè)升級(jí)版。
import?matplotlib.pyplot?as?plt
import?numpy?as?np
N?=?10
x?=?np.random.rand(N)
y?=?np.random.rand(N)
#?每個(gè)點(diǎn)隨機(jī)大小
s?=?(30*np.random.rand(N))**2
#?隨機(jī)顏色
c?=?np.random.rand(N)
plt.scatter(x,?y,?s=s,?c=c,?alpha=0.5)
plt.show()
Seaborn散點(diǎn)圖 + 分布圖
#創(chuàng)建數(shù)據(jù)
rs?=?np.random.RandomState(2)
df?=?pd.DataFrame(rs.randn(200,2),?columns?=?['A','B'])
?
sns.jointplot(x=df['A'],?y=df['B'],?#設(shè)置xy軸,顯示columns名稱
??????????????data?=?df,??#設(shè)置數(shù)據(jù)
??????????????color?=?'b',?#設(shè)置顏色
??????????????s?=?50,?edgecolor?=?'w',?linewidth?=?1,#設(shè)置散點(diǎn)大小、邊緣顏色及寬度(只針對(duì)scatter)
??????????????stat_func=sci.pearsonr,
??????????????kind?=?'scatter',#設(shè)置類型:'scatter','reg','resid','kde','hex'
??????????????#stat_func=,
??????????????space?=?0.1,?#設(shè)置散點(diǎn)圖和布局圖的間距
??????????????size?=?8,?#圖表大小(自動(dòng)調(diào)整為正方形))
??????????????ratio?=?5,?#散點(diǎn)圖與布局圖高度比,整型
??????????????marginal_kws?=?dict(bins=15,?rug?=True),?#設(shè)置柱狀圖箱數(shù),是否設(shè)置rug
??????????????)
帶線性回歸最佳擬合線的散點(diǎn)圖
如果你想了解兩個(gè)變量如何相互改變,那么最佳擬合線就是常用的方法。下圖顯示了數(shù)據(jù)中各組之間最佳擬合線的差異。要禁用分組并僅為整個(gè)數(shù)據(jù)集繪制一條最佳擬合線,請(qǐng)從下面的 sns.lmplot()調(diào)用中刪除 hue ='cyl'參數(shù)。
import?seaborn?as?sns
sns.set(style="darkgrid")
tips?=?sns.load_dataset("tips")
g?=?sns.jointplot("total_bill",?"tip",?data=tips,
??????????????????kind="reg",?truncate=False,
??????????????????xlim=(0,?60),?ylim=(0,?12),
??????????????????color="m",?height=7)
矩陣散點(diǎn)圖
矩陣散點(diǎn)圖 - pairplot()
#設(shè)置風(fēng)格
sns.set_style('white')
#讀取數(shù)據(jù)
iris?=?sns.load_dataset('iris')
print(iris.head())
sns.pairplot(iris,
?????????????kind?=?'scatter',?#散點(diǎn)圖/回歸分布圖{'scatter',?'reg'})
?????????????diag_kind?=?'hist',?#直方圖/密度圖{'hist',?'kde'}
?????????????hue?=?'species',???#按照某一字段進(jìn)行分類
?????????????palette?=?'husl',??#設(shè)置調(diào)色板
?????????????markers?=?['o',?'s',?'D'],?#設(shè)置不同系列的點(diǎn)樣式(這里根據(jù)參考分類個(gè)數(shù))
?????????????size?=?2??#圖標(biāo)大小
?????????????)
加老胡微信,圍觀朋友圈
推薦閱讀
Python數(shù)據(jù)可視化,被Altair圈粉了
機(jī)器學(xué)習(xí)深度研究:特征選擇中幾個(gè)重要的統(tǒng)計(jì)學(xué)概念

評(píng)論
圖片
表情






