首頁  >  文章  >  後端開發  >  如何根據Python中的列值為散佈圖中的點指定顏色?

如何根據Python中的列值為散佈圖中的點指定顏色?

Susan Sarandon
Susan Sarandon原創
2024-10-19 14:49:02748瀏覽

How to Assign Colors to Points in Scatter Plots Based on Column Values in Python?

在Python 中按列值對散點圖著色

R 中ggplot2 的多功能性允許根據列將顏色無縫分配給數據點價值觀。也可以使用 pandas 資料幀和 Matplotlib 在 Python 中複製此功能。

使用Pandas 和Matplotlib

要將顏色對應到Matplotlib 中的值,請考慮以下步驟:

  1. :定義一個字典,將分類列中的唯一值對應到對應的顏色。這可確保跨資料點的顏色分配保持一致。
  2. 新增顏色列:在資料框中建立一個新列,為分類列中的每個值分配對應的顏色。
  3. 繪製散佈圖:使用 matplotlib.pyplot.scatter 中的 c 參數指定顏色欄位作為顏色參數。

這裡有一個範例實作:

<code class="python">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.random.normal(size=10),
                       'Weight':np.random.normal(size=10),
                       'Gender': ["Male","Male","Unknown","Male","Male",
                                  "Female","Did not respond","Unknown","Female","Female"]})    
fig = dfScatter(df)</code>

這將產生一個散點圖,其中「性別」列決定每個資料點的顏色。

以上是如何根據Python中的列值為散佈圖中的點指定顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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