集群圖
在這節(jié)課坪稽,你見到了描繪數(shù)字變量和分類變量之間關(guān)系的很多方式曼玩。小提琴圖將分布描繪為密度曲線,箱線圖采用的是摘要形式窒百,將數(shù)量繪制為須線黍判。這些圖形的另一種替代方式是集群圖。和散點(diǎn)圖類似篙梢,每個(gè)數(shù)據(jù)點(diǎn)根據(jù)在兩個(gè)變量上的值確定在圖形中的位置顷帖。點(diǎn)放置在盡量接近真實(shí)值的位置,不允許有任何重疊現(xiàn)象渤滞,而不是像在正常散點(diǎn)圖中那樣隨機(jī)抖動(dòng)數(shù)據(jù)點(diǎn)贬墩。可以使用 seaborn 中的 swarmplot
函數(shù)創(chuàng)建集群圖妄呕,調(diào)用方式和 violinplot
和 boxplot
差不多陶舞。
plt.figure(figsize = [12, 5])
base_color = sb.color_palette()[0]
# left plot: violin plot
plt.subplot(1, 3, 1)
ax1 = sb.violinplot(data = df, x = 'cat_var', y = 'num_var', color = base_color)
# center plot: box plot
plt.subplot(1, 3, 2)
sb.boxplot(data = df, x = 'cat_var', y = 'num_var', color = base_color)
plt.ylim(ax1.get_ylim()) # set y-axis limits to be same as left plot
# right plot: swarm plot
plt.subplot(1, 3, 3)
sb.swarmplot(data = df, x = 'cat_var', y = 'num_var', color = base_color)
plt.ylim(ax1.get_ylim()) # set y-axis limits to be same as left plot
并排地查看這些圖形后,可以看出集群圖的優(yōu)勢與不足绪励。和小提琴圖和箱線圖不同的是肿孵,每個(gè)點(diǎn)都繪制出來论咏,因此可以比較每個(gè)群組在同一圖形中的頻率。雖然由于位置抖動(dòng)而出現(xiàn)變形颁井,但是我們也可以確切地了解每個(gè)點(diǎn)實(shí)際位于何處厅贪,消除了小提琴圖中可能出現(xiàn)的長尾現(xiàn)象。
但是雅宾,只有數(shù)據(jù)量很少或適中時(shí)养涮,才適合使用集群圖。如果有太多的數(shù)據(jù)點(diǎn)眉抬,那么重疊限制將導(dǎo)致變形嚴(yán)重贯吓,或者需要很多空間才能很好地繪制數(shù)據(jù)。此外蜀变,數(shù)據(jù)點(diǎn)太多實(shí)際上會(huì)存在干擾悄谐,使我們更難發(fā)現(xiàn)圖形中的關(guān)鍵規(guī)律。請根據(jù)在單變量可視化部分得出的結(jié)論判斷哪個(gè)雙變量可視化圖形最合適库北,或者直接嘗試不同的圖形爬舰,看看哪個(gè)呈現(xiàn)的信息最多。