散點(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)圖了。
在 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()
散點(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()
#創(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=<function pearsonr>,
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
)
如果你想了解兩個(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)圖 - 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)大小
)
加老胡微信,圍觀朋友圈
聯(lián)系客服