Python 中按列值对散点图进行颜色编码
在数据可视化中,为不同类别分配颜色可以增强清晰度并揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我们如何使用 pandas 和 matplotlib 在 Python 中实现相同的功能?
更新:Seaborn 增强
自原始答案以来,Seaborn 已成为一个强大的库,用于创建信息丰富且具有视觉吸引力的情节。它最近的更新提供了基于列值对散点图进行着色的便捷函数:
原始 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中文网其他相关文章!