Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Mewarnakan Plot Taburan Berdasarkan Nilai Lajur Tertentu dalam Panda dengan Matplotlib?

Bolehkah Anda Mewarnakan Plot Taburan Berdasarkan Nilai Lajur Tertentu dalam Panda dengan Matplotlib?

Barbara Streisand
Barbara Streisandasal
2024-10-19 14:50:02753semak imbas

Can You Color Scatter Plots Based on Specific Column Values in Pandas with Matplotlib?

Mewarnai Plot Taburan mengikut Nilai Lajur Menggunakan Panda dan Matplotlib

Matplotlib ialah perpustakaan Python yang popular untuk mencipta visualisasi statik, animasi dan interaktif dalam Ular sawa. Artikel ini meneroka menggunakan Matplotlib untuk mewarna plot taburan berdasarkan nilai dalam lajur tertentu Pandas DataFrame.

Import dan Data

Untuk bermula, kami mengimport perpustakaan yang diperlukan , termasuk Matplotlib (sebagai plt) dan Pandas (sebagai pd). Kami juga menjana sampel DataFrame ("df") dengan tiga lajur: "Ketinggian," "Berat" dan "Jantina."

<code class="python">import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

np.random.seed(0)
N = 37
_genders = ["Female", "Male", "Non-binary", "No Response"]
df = pd.DataFrame({
    "Height (cm)": np.random.uniform(low=130, high=200, size=N),
    "Weight (kg)": np.random.uniform(low=30, high=100, size=N),
    "Gender": np.random.choice(_genders, size=N),
})</code>

Dikemas kini pada Ogos 2021

Seaborn telah memperkenalkan fungsi aras angka baharu, seperti seaborn.replot dalam versi 0.11.0. Fungsi ini disyorkan daripada menggunakan FacetGrid secara langsung.

<code class="python">sns.relplot(data=df, x="Weight (kg)", y="Height (cm)", hue="Gender", hue_order=_genders, aspect=1.61)
plt.show()</code>

Jawapan Lama (2015)

Jika anda ingin menggunakan Matplotlib secara langsung, anda perlu memetakan matplotlib's fungsi taburan ke kategori Pandas DataFrame. Untuk melakukan ini:

  • Buat kamus dengan kategori unik daripada lajur dan warna.
  • Tambah lajur "Warna" baharu pada DataFrame, memperuntukkan setiap kategori warna yang sepadan.
  • Gunakan fungsi serakan untuk memplot data, menyatakan lajur warna sebagai hujah "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

fig = dfScatter(df)
fig.savefig('fig1.png')</code>

Dengan mengikuti langkah ini, anda boleh mewarnakan plot serakan dengan mudah berdasarkan nilai lajur menggunakan Panda dan Matplotlib.

Atas ialah kandungan terperinci Bolehkah Anda Mewarnakan Plot Taburan Berdasarkan Nilai Lajur Tertentu dalam Panda dengan Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn