如何解决matplotlib散点图添加没有循环且不使用seaborn的图例
我在运行以下代码时收到错误 No handles with labels found to put in legend.
。如何向此散点图添加图例以显示颜色定义(A 为红点,B 为蓝点,C 为绿点)?
### Dummy Dataset
x = [0,1,-1,4,2,2]
y = [1,5,9,6,1]
cat = ['A','B','A','C','B']
df = pd.DataFrame(list(zip(x,y,cat)),columns =['x','y','cat'])
### Build color definitions
df.loc[:,'color'] = df.cat
df.color.replace(['A','C'],['red','blue','green'],inplace=True)
display(df)
### Plotting
fig = plt.figure(figsize=(5,5),constrained_layout=True)
gs = fig.add_gridspec(2,1)
ax1 = fig.add_subplot(gs[0,0])
ax1.scatter(df.x,df.y,edgecolors = 'none',c = df.color)
ax1.legend(loc='upper left',facecolor='white',frameon=1,framealpha=1,labelspacing=0.2,borderpad=0.25)
解决方法
如果没有简单的循环,似乎没有办法做到这一点。基于过程 here,以下代码有效。
x = [0,1,-1,4,2,2]
y = [1,5,9,6,1]
cat = ['A','B','A','C','B']
df = pd.DataFrame(list(zip(x,y,cat)),columns =['x','y','cat'])
mycolorsdict = {'A':'red','B':'blue','C':'green'}
fig = plt.figure(figsize=(5,5),constrained_layout=True)
gs = fig.add_gridspec(2,1)
ax1 = fig.add_subplot(gs[0,0])
grouped = df.groupby('cat')
for key,group in grouped:
group.plot(ax=ax1,kind='scatter',x='x',y='y',label=key,color=mycolorsdict[key])
ax1.legend(loc='upper left',facecolor='white',frameon=1,framealpha=1,labelspacing=0.2,borderpad=0.25)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。