国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python matplotlib繪圖實現刪除重復冗余圖例的操作

瀏覽:5日期:2022-06-22 10:42:15
問題:

由于自己做項目的時候,需要循環的繪制數據,假設有100個樣本,每個樣本包含兩個坐標點(A, B),我需要對這兩個點標上不同的顏色,同時還要畫出兩點間的連線。

顯然這個問題中圖例我只需要3個(A點,B點,AB的連線),而不是300個,因為每個樣本的A點都是同樣的顏色,B點也都是一樣的顏色,AB的連線也是。

但是單純的在畫完圖之后用plt.legend(), 它會給你畫出所有300個圖例來,這肯定不是我想要的。

探索過程:

如何解決呢?

當然有一種很強制的方法,就是只在畫第一個樣本,或最后一個樣本時,給其指定label,其它樣本時不給label,就不會畫出來了。

但是我在想有沒有更好地辦法,百度了半天,窮盡所有關鍵詞,無果。

轉而谷歌,想著要不把關鍵詞換成英語看看(以前總覺得看英文的博客會比中文的慢很多,總會更偏向于母語閱讀,但是這次經歷大概會改變我之后的態度,相比起為了排除百度的大量無關答案所花的漫長的時間,好像還不如直接搜索英文來得有效率,關鍵詞搜的就是:python omit redundant legend),結果第一條搜索結果就看到了我想要的解決方案,很是驚喜,本著方便自己以后查找,也方便遇到同樣問題的人,故而記錄下來,雖然不是什么多神的東西啦。

解決方案:

from collections import OrderedDictimport 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() # 關窗口

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 99精品免费在线观看 | 青青草国产免费国产是公开 | 91精品国产免费久久久久久青草 | 日本特黄特色免费大片 | 6一10周岁毛片免费 6一12呦女精品 | 98国内自拍在线视频 | 亚洲精品国产三级在线观看 | 最新国产精品自拍 | 国产精品亚洲欧美云霸高清 | 黄色在线视频网 | 国产男女 爽爽爽爽视频 | 三a大片| 毛片在线视频 | 国产精品影视 | 国产欧美一区二区日本加勒比 | 国产高清在线精品一区二区三区 | 亚洲m男在线中文字幕 | 精品欧美高清不卡在线 | 国亚洲欧美日韩精品 | 国产毛片一级国语版 | 日本一级特黄aa毛片免费观看 | 久久久久久久久a免费 | 日本精品一区二区三区在线 | 国产精品青草久久久久福利99 | 99香蕉网 | 99re66热这里只有精品免费观看 | 亚洲一级免费视频 | 99亚洲视频 | 久久国产精品一国产精品 | 国内自拍视频一区二区三区 | 131美女爱做免费毛片 | 久久成人动漫 | 亚洲 欧美 国产 日韩 制服 bt | 免费人成观看在线网 | 亚洲免费色视频 | 国产毛片不卡 | 欧美国产日韩一区二区三区 | 成年男女拍拍拍免费视频 | 欧美激情自拍 | 一色屋精品亚洲香蕉网站 | 久99久精品视频免费观看v |