爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14240|回复: 1

[经验总结] python小白总结:对不同标记的散点分组,用相同的图例legend表示

[复制链接]

新浪微博达人勋

发表于 2021-1-10 17:01:40 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 0727 于 2021-1-10 19:37 编辑

不知道我标题有没有描述清楚,还是用图片表达一下。想得到图示legend,不同的标记归为一类legend表示:
untitled.png



                               
登录/注册后可看大图


实现方法:

plt.legend([(a,b),(c)], ['goupdata1', 'groupdata2'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})



                               
登录/注册后可看大图


参考的网址以及例子如下:
https://www.pythonheidong.com/blog/article/338925/24eac3740449708b7734/

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerTuple
import numpy as np
group1 = np.array([[1,4,6],[3,2,5]])
group2 = np.array([[1,5,9],[2,2,5]])
group3 = np.array([[1,4,2],[11,2,7]])
a, =plt.plot(group1[0,:],group1[1,:], 'ro', marker='^')
b, =plt.plot(group2[0,:],group2[1,:], 'bo', marker='o')
c, =plt.plot(group3[0,:],group3[1,:], 'go', marker='s')
plt.legend([(a,b,c)], ['goupdata'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})plt.show()




                               
登录/注册后可看大图



##note,在我自己的脚本中使用这个命令行不通,报错:
print(a,b,c)发现自己脚本中a b c是AxesSubplot(0.125,0.11;0.775x0.77)
而例子中a b c 的属性是:<matplotlib.collections.PathCollection object at 0x7fa01df82ad0>
而后 通过print(dir(a)) 这个命令查自己脚本中a b c所有的属性 发现有collections这个句柄
所以加入如下几行:
a = a.collections (因为a对应的axes 对应的整块画布 可以一直更新画布信息 因此只要a就够了)

最后通过命令实现添加legend:
tax.legend([(a[0],a[1],a[2])], ['goupdata'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-1-11 15:30:54 | 显示全部楼层
感谢楼主分享123456789
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表