Python での列値による散布図の色分け
データ視覚化では、さまざまなカテゴリに色を割り当てると、明瞭さが向上し、パターンが明らかになります。この機能は R の ggplot2 ですぐに利用できますが、pandas と matplotlib を使用して Python で同じことを実現するにはどうすればよいですか?
更新: Seaborn Enhancements
元の回答以来, Seaborn は、有益で視覚的に魅力的なプロットを作成するための強力なライブラリとして登場しました。最近の更新では、列の値に基づいて散布図に色を付けるための便利な関数が提供されています。
オリジナルの Pandas と Matplotlib のアプローチ
Matplotlib を使用した直接的なアプローチを探している人のために、色を割り当てるカスタム関数を次に示します。カテゴリカル列に基づいてポイントに変換:
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
この関数は、一意のカテゴリ値から色の辞書を作成し、対応する色をデータ ポイントに割り当てます。次に、色分けされた点を使用して散布図が生成されます。
例
提供されたサンプル データフレームを使用します:
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"]})
データフレームを使用して dfScatter 関数を呼び出す:
fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')
点が性別によって色分けされた散布図を作成します:
[性別によって色分けされた散布図のイメージ]
Seaborn の高度な機能とカスタム dfScatter 関数は、Python の散布図に色分けを追加するための柔軟なオプションを提供し、データの視覚化をより有益で視覚的に魅力的なものにします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3