python - 来自 pandas 数据帧的散点图中的 Matplotlib 图例

标签 python pandas matplotlib scatter-plot

我正在尝试将图例正确显示在下图中。它应该只是“绿色”、“蓝色”和“红色”以及相应的颜色。但它无处不在。 enter image description here

代码如下:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
        'category':['blue','green','red','blue','green','red','blue','green','red'],
        'attempts':[8955,7881,6723,100,200,300,4567,876,54],
        'success':[3000,7500,2000, 256,4567,4567,7665,543,43]
})
fig,ax = plt.subplots()
plt.scatter(df['attempts'],df['success'],c=df['category'],label=df['category'])
plt.legend(loc=2)
plt.savefig('scatter.png')
plt.show()

我怎样才能做到这一点? (这里有一个类似的:第二部分“带组的散点图”中的https://pythonspot.com/matplotlib-scatterplot/,但这不是基于pandas dataframe)。

最佳答案

您可以使用seaborn的散点图:

fig,ax = plt.subplots()
sns.scatterplot(data=df, hue='category', x='attempts', y='success')
plt.legend(loc=2)
plt.savefig('scatter.png')
plt.show()

输出:

enter code here

或者纯matplotlib:

fig,ax = plt.subplots()
for k,d in df.groupby('category'):
    ax.scatter(d['attempts'], d['success'], label=k)
plt.legend(loc=2)
plt.savefig('scatter.png')
plt.show()

输出:

enter image description here

关于python - 来自 pandas 数据帧的散点图中的 Matplotlib 图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57999419/

相关文章:

python - Seaborn 子图上的 GridSpec

python - matplotlib - 使用多轴时定位 xlabel/ylabel(hist + scatter)

python - 有选择地迭代张量

python - Pandas:按 | 过滤行(OR) – 不互相包容

python-3.x - read_csv 对 movielens 20M 数据集给出错误

python - 如何更改matplotlib AxesSubplot的颜色?

python - python 上的可执行文件出现问题

python - SQLAlchemy 将上一个默认值插入到下一个默认值中

python - 使用 loc 的 Pandas 浮点值问题

python - 如何在 Django 模型字段中存储 HDF5(HDF Store)