首頁  >  文章  >  後端開發  >  如何在 Python 中按列值對散佈圖進行顏色編碼?

如何在 Python 中按列值對散佈圖進行顏色編碼?

Barbara Streisand
Barbara Streisand原創
2024-10-19 14:47:02591瀏覽

How to Color-Code Scatter Plots by Column Values in Python?

Python 中按列值對散點圖進行顏色編碼

在資料視覺化中,為不同類別分配顏色可以增強清晰度並揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我們如何使用 pandas 和 matplotlib 在 Python 中實現相同的功能?

更新:Seaborn 增強

自原始答案以來,Seaborn 已成為一個強大的庫,用於創建信息豐富且具有視覺吸引力的情節。它最近的更新提供了基於列值對散佈圖進行著色的便捷函數:

  • 使用seaborn.relplot:這個高階函數結合了matplotlib.pyplot.scatter 和Seaborn 的各個面向FacetGrid。它根據指定的色調和順序參數自動處理顏色編碼。
  • 將 matplotlib.pyplot.scatter 對應到 seaborn.FacetGrid:與原始方法類似,您可以將 scatter 函數對應到FacetGrid 並根據色調自訂顏色。

原始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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn