如何为不同的组使用不同的颜色创建散点图? [复制]

Posted

技术标签:

【中文标题】如何为不同的组使用不同的颜色创建散点图? [复制]【英文标题】:How can i create a scatter plot using different colours for different groups? [duplicate] 【发布时间】:2021-12-19 02:25:57 【问题描述】:

我想使用散点图绘制我的数据。我尝试使用以下代码:

DF.groupby('Title').plot(x = 'Total',y = 'Rating', kind='scatter')

它有效,但它给了我两个情节 - 每组一个。我想要的是一个将两组数据放在一起但颜色不同的图,例如第一组为红色,第二组为绿色。那可能吗?谢谢你的帮助:)

【问题讨论】:

这个问题需要SSCCE。请参阅How to ask a good question。始终提供带有代码、数据、错误、当前输出和预期输出的完整minimal reproducible example,如formatted text。如果相关,只有绘图图像是可以的。如果您不包含 mre,则该问题可能会被否决、关闭和删除。 提供groupby之前的原始数据框示例 【参考方案1】:
import matplotlib.pyplot as plt
for i,j in df.groupby("Title"):
    plt.scatter(j.Total,j.Rating,label=i)
    plt.legend(loc="best")

【讨论】:

感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。【参考方案2】:

在这种情况下,您不想聚合值,因此不需要使用groupby。 相反,您可以根据需要绘制这样的散点图:

import pandas as pd
  
data=
    'x':[1, 2, 3, 4, 5, 6],
    'y':[3, 6, 9, 3, 6, 9],
    'title': [1, 1, 1, 2, 2, 2]
     

df = pd.DataFrame(data)

print(df)
'''
   x  y  title
0  1  3      1
1  2  6      1
2  3  9      1
3  4  3      2
4  5  6      2
5  6  9      2
'''

ax = df[df['title']==1].plot(x="x", y="y", color="Red", label="Title 1", kind='scatter')
df[df['title']==2].plot(x="x", y="y", color="Green", label="Title 2", kind='scatter', ax=ax)

使用seaborn 库,您可以以非常方便的方式做更多事情(请参阅https://seaborn.pydata.org/generated/seaborn.scatterplot.html)。

【讨论】:

以上是关于如何为不同的组使用不同的颜色创建散点图? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab 画散点图 如何标记数据点的颜色

具有不同颜色编码和不同标记的 Sns 散点图

具有不同类别的 Libreoffice 散点图

使用 OpenGL 的散点图:如何设置标记样式

尝试创建一个散点图,其中循环标记和颜色,以便在标记的 1 个循环完成后更改颜色

kmeans 散点图:为每个簇绘制不同的颜色