Python 中按列值對散點圖進行顏色編碼
在資料視覺化中,為不同類別分配顏色可以增強清晰度並揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我們如何使用 pandas 和 matplotlib 在 Python 中實現相同的功能?
更新:Seaborn 增強
自原始答案以來,Seaborn 已成為一個強大的庫,用於創建信息豐富且具有視覺吸引力的情節。它最近的更新提供了基於列值對散佈圖進行著色的便捷函數:
原始Pandas 和Matplotlib 方法
對於那些尋求直接使用Matplotlib 方法的人,這裡有一個分配顏色的自訂函數基於分類列的點:
<code class="python">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</code>
此函數根據唯一類別值建立顏色字典,並將對應的顏色指派給資料點。然後使用顏色編碼點產生散點圖。
示例
使用提供的示例數據框:
<code class="python">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"]})</code>
調用dfScatter 函數使用數據框:
<code class="python">fig = dfScatter(df) fig.savefig('color_coded_scatterplot.png')</code>
產生一個散點圖,其中點按性別著色:
[按性別著色的散點圖圖像]
Seaborn 的高級功能和自定義dfScatter 函數提供了靈活的選項,用於在Python 中向散佈圖添加顏色編碼,使資料視覺化更具資訊性和視覺吸引力。
以上是如何在 Python 中按列值對散佈圖進行顏色編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!