按列值对散点图着色
在 Python 中,Matplotlib 库提供了多种自定义散点图美观的方法。一项常见任务是根据特定列中的值分配颜色。
Seaborn 集成
一种解决方案是利用基于 Matplotlib 构建的 Seaborn 库。 Seaborn 提供 sns.relplot 和 sns.FacetGrid 等高级函数,使您可以轻松地将散点图映射到特定列。通过指定hue参数,您可以根据包含类别标签的第三列对点进行着色。
<code class="python">import seaborn as sns sns.relplot(data=df, x='Weight (kg)', y='Height (cm)', hue='Gender')</code>
直接使用Matplotlib
或者,您可以直接使用Matplotlib plt.scatter 函数用于创建散点图并手动指定颜色。这需要创建一个自定义颜色字典,将类别标签映射到颜色。
<code class="python">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.random.normal(size=10), 'Weight': np.random.normal(size=10), 'Gender': ["Male", "Male", "Unknown", "Male", "Male", "Female", "Did not respond", "Unknown", "Female", "Female"]}) fig = dfScatter(df)</code>
以上是如何在 Python 中按列值对散点图着色?的详细内容。更多信息请关注PHP中文网其他相关文章!