首页  >  文章  >  后端开发  >  如何在 Python 中按列值对散点图进行颜色编码?

如何在 Python 中按列值对散点图进行颜色编码?

Barbara Streisand
Barbara Streisand原创
2024-10-19 14:47:02591浏览

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

Python 中按列值对散点图进行颜色编码

在数据可视化中,为不同类别分配颜色可以增强清晰度并揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我们如何使用 pandas 和 matplotlib 在 Python 中实现相同的功能?

更新:Seaborn 增强

自原始答案以来,Seaborn 已成为一个强大的库,用于创建信息丰富且具有视觉吸引力的情节。它最近的更新提供了基于列值对散点图进行着色的便捷函数:

  • 使用seaborn.relplot:这个高级函数结合了 matplotlib.pyplot.scatter 和 Seaborn 的各个方面FacetGrid。它根据指定的色调和顺序参数自动处理颜色编码。
  • 将 matplotlib.pyplot.scatter 映射到 seaborn.FacetGrid:与原始方法类似,您可以将 scatter 函数映射到FacetGrid 并根据色调自定义颜色。

原始 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn