如何为不同的组使用不同的颜色创建散点图? [复制]
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)。
【讨论】:
以上是关于如何为不同的组使用不同的颜色创建散点图? [复制]的主要内容,如果未能解决你的问题,请参考以下文章