网络编程
位置:首页>> 网络编程>> Python编程>> python matplotlib绘图实现删除重复冗余图例的操作

python matplotlib绘图实现删除重复冗余图例的操作

作者:grace_cxj  发布时间:2023-11-02 22:36:44 

标签:python,matplotlib,重复,图例

问题:

由于自己做项目的时候,需要循环的绘制数据,假设有100个样本,每个样本包含两个坐标点(A, B),我需要对这两个点标上不同的颜色,同时还要画出两点间的连线。

显然这个问题中图例我只需要3个(A点,B点,AB的连线),而不是300个,因为每个样本的A点都是同样的颜色,B点也都是一样的颜色,AB的连线也是。

但是单纯的在画完图之后用plt.legend(), 它会给你画出所有300个图例来,这肯定不是我想要的。

探索过程:

如何解决呢?

当然有一种很强制的方法,就是只在画第一个样本,或最后一个样本时,给其指定label,其它样本时不给label,就不会画出来了。

但是我在想有没有更好地办法,百度了半天,穷尽所有关键词,无果。

转而谷歌,想着要不把关键词换成英语看看(以前总觉得看英文的博客会比中文的慢很多,总会更偏向于母语阅读,但是这次经历大概会改变我之后的态度,相比起为了排除百度的大量无关答案所花的漫长的时间,好像还不如直接搜索英文来得有效率,关键词搜的就是:python omit redundant legend),结果第一条搜索结果就看到了我想要的解决方案,很是惊喜,本着方便自己以后查找,也方便遇到同样问题的人,故而记录下来,虽然不是什么多神的东西啦。

解决方案:


from collections import OrderedDict
import matplotlib.pyplot as plt

handles, labels = plt.gca().get_legend_handles_labels()
by_label = OrderedDict(zip(labels, handles))
plt.legend(by_label.values(), by_label.keys())

理解:

plt的legend函数可接收两个参数,一个是handles列表,一个是label列表。

引入有序字典OrderedDict的目的就是去除冗余的图例,因为字典的键值不能重复(即重复的只保留一个)。

第一行的意思应该是迭代地将当前plt中存的所有handles和labels返回到handles变量和labels变量中,你之前所在画布上画的每一步应该都会存在plt中。

所以,上述代码的作用是:仅保留plt中存在的所有非同名的图例名称,不出现重复图例名称

补充:Python/matplotlib之清空绘图

clf() # 清图

cla() # 清坐标轴

close() # 关窗口

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/grace_cxj/article/details/80963211

0
投稿

猜你喜欢

  • 1、Config命令Config命令主要用于修改SSI的默认设置。其中:Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息
  • 使用scrapy爬取了网上的一些数据,存储在了mysql数据库中,想使用Django将数据展示出来,在网上看到都是使用Django的mode
  • 我查了资料:setRequestHeader,单独指定请求的某个http头语法oXMLHttpRequest.setRequestHeade
  • 在浏览天极RSS订阅页面时,可以看到天极网为方便用户定制站点内容而设立的各个RSS频道。浏览者通过订阅不同的RSS(可同时订阅多个网站),就
  • 呵呵,先说明一下下面的程序大部分收集自网络,因为本人在asp编程中经常使用到随机函数,所以收集了一些这类的函数,并做了些注释,方便使用。首发
  • 打开VB6,新建ActiveX DLL 2、在工程引用中加入Microsoft Active Server Pages Object Lib
  • 要做好一个HTML邮件,说简单,还真不怎么复杂,说它复杂,其实也不难。-_-!!以前写过类似的[ 关于HTML邮件的总结 ],最近又犯愁,就
  • 孟宪会  由于XML(可扩展标记语言:eXtensible Markup Language)真正的平台无关性,它正在逐渐成为数据传
  • 本文实例讲述了Go语言中的匿名结构体用法。分享给大家供大家参考。具体实现方法如下:package main   
  • 一直以来都有这样一个困惑,那就是打开页面间的链接时是在原窗口转换还在新窗口打开呢?如果是在原窗口里转换页面的话,那我还想使用原页面的信息呢?
  • 网页可以说是网站构成的基本元素。当我们轻点鼠标,在网海中遨游,一幅幅精彩的网页会呈现在我们面前,那么,网页的精彩与否的因素是什么呢?色彩的搭
  •  '************************************* '读取文件 &
  • 最近看到大家都练习写树,偶也学习学习写了一个,大家多多批评,我好进步。不过我看了一些树的xml文档都是在xml中就已经有了树的结构,所以我写
  • 利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法。我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站
  • <?php //设置我们将要使用的文件 $srcurl = "http://localhost/index.php"
  • 层的八条定律当然,这些并非真正的定律,而只是一些有益的忠告,使你免陷于使用层时可能的困顿中。原来有九条定律的,我们精简掉一条,还有下面的八条
  • 例如:我们在百度中搜索 词典网,则网址后面的参数就是http://www.baidu.com/s?cl=3&wd=%B4%CA%B5
  • 本文实例为大家分享了vuejs实现下拉框菜单选择的具体代码,供大家参考,具体内容如下方法一:<script type="te
  • 下面通过实例代码给大家分享Python切片操作去除字符串首尾的空格的方法,具体内容如下所示:#利用切片操作,实现一个trim()函数,去除字
  • 如下所示:interval=stats.t.interval(a,b,mean,std)t分布的置信区 间a:置信水平b:检验量的自由度me
手机版 网络编程 asp之家 www.aspxhome.com