Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Plot Taburan Kod Warna mengikut Nilai Lajur dalam Python?

Bagaimana untuk Plot Taburan Kod Warna mengikut Nilai Lajur dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-19 14:47:02689semak imbas

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

Plot Taburan Pengekodan Warna mengikut Nilai Lajur dalam Python

Dalam visualisasi data, memberikan warna kepada kategori berbeza boleh meningkatkan kejelasan dan mendedahkan corak. Fungsi ini tersedia dalam ggplot2 untuk R, tetapi bagaimana kita boleh mencapai perkara yang sama dalam Python menggunakan panda dan matplotlib?

Kemas kini: Peningkatan Seaborn

Sejak jawapan asal , Seaborn telah muncul sebagai perpustakaan yang berkuasa untuk mencipta plot bermaklumat dan menarik secara visual. Kemas kini terbarunya menawarkan fungsi yang mudah untuk mewarna plot taburan berdasarkan nilai lajur:

  • Menggunakan seaborn.replot: Fungsi peringkat tinggi ini menggabungkan aspek matplotlib.pyplot.scatter dan Seaborn's FacetGrid. Ia secara automatik mengendalikan pengekodan warna berdasarkan warna dan parameter pesanan yang ditentukan.
  • Memetakan matplotlib.pyplot.scatter ke seaborn.FacetGrid: Sama seperti pendekatan asal, anda boleh memetakan fungsi serakan pada FacetGrid dan sesuaikan warna berdasarkan warna.

Pendekatan Panda dan Matplotlib Asal

Bagi mereka yang mencari pendekatan langsung dengan Matplotlib, berikut ialah fungsi tersuai yang menetapkan warna kepada mata berdasarkan lajur kategori:

<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>

Fungsi ini mencipta kamus warna daripada nilai kategori unik dan memberikan warna yang sepadan kepada titik data. Plot taburan kemudian dijana dengan titik berkod warna.

Contoh

Menggunakan kerangka data sampel yang disediakan:

<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>

Memanggil fungsi dfScatter dengan bingkai data:

<code class="python">fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')</code>

Menghasilkan plot serakan dengan titik diwarnakan mengikut jantina:

[Imej plot serakan diwarnakan mengikut jantina]

Ciri lanjutan Seaborn dan fungsi dfScatter tersuai menyediakan pilihan yang fleksibel untuk menambah pengekodan warna pada plot taburan dalam Python, menjadikan visualisasi data lebih bermaklumat dan menarik secara visual.

Atas ialah kandungan terperinci Bagaimana untuk Plot Taburan Kod Warna mengikut Nilai Lajur dalam Python?. 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