Python 中按列值对散点图进行颜色编码
在数据可视化中,为不同类别分配颜色可以增强清晰度并揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我们如何使用 pandas 和 matplotlib 在 Python 中实现相同的功能?
更新:Seaborn 增强功能
Since 原始答案,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