Python 中按列值對散點圖進行顏色編碼
在資料視覺化中,為不同類別分配顏色可以增強清晰度並揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我們如何使用 pandas 和 matplotlib 在 Python 中實現相同的功能?
更新:Seaborn 增強功能
Since 原始答案,Seaborn 已成為一個強大的庫,用於創建信息豐富且具有視覺吸引力的情節。它最近的更新提供了基於列值對散佈圖進行著色的便捷函數:
原始Pandas 和Matplotlib 方法
對於那些尋求直接使用Matplotlib 方法的人,這裡有一個分配顏色的自訂函數基於分類列的點:
import matplotlib.pyplot as plt
import pandas as pd
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df["Color"] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df["Color"])
return fig
此函數根據唯一類別值建立顏色字典,並將對應的顏色指派給資料點。然後使用顏色編碼點產生散點圖。
範例
使用提供的範例資料框:
df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
'Gender': ["Male", "Male", "Male", "Male", "Male",
"Female", "Female", "Female", "Female", "Female"]})
使用提供的範例資料框:
fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')
使用資料框呼叫 dfScatter 函式:
fig = dfScatter(df ) Fig.savefig('color_coded_scatterplot.png')產生一個散佈圖,其中點按性別著色:[按性別著色的散點圖圖像]
Seaborn 的高級功能和自訂dfScatter 函數提供了靈活的選項,用於在Python 中向散點圖添加顏色編碼,使資料視覺化更具資訊性和視覺吸引力。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3