Matplotlib繪圖基礎(chǔ)之圖例詳解
Matplotlib 中的圖例是幫助觀察者理解圖像數(shù)據(jù)的重要工具。
圖例通常包含在圖像中,用于解釋不同的顏色、形狀、標(biāo)簽和其他元素。
1. 主要參數(shù)
當(dāng)不設(shè)置圖例的參數(shù)時,默認(rèn)的圖例是這樣的。
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.plot(x, y1, label="sin") ax.plot(x, y2, label="cos") ax.legend()

圖例就是右上角的那個部分。
圖例的主要參數(shù),其實也就是上例 ax.lengend() 函數(shù)的主要參數(shù):
- 圖例位置相關(guān):
loc(位置字符串) - 邊框相關(guān):facecolor(背景色),edgecolor(邊框顏色),shadow(是否設(shè)置陰影)framemon(是否有邊框和背景)
- 圖例的列數(shù):默認(rèn)是1列多行的格式,ncol(列的個數(shù))
2. 配置示例
通過示例來演示常用的設(shè)置。
2.1. 圖例位置
fig, ax = plt.subplots(3, 3)
fig.set_size_inches(10, 10)
locations = [
["lower left", "lower center", "lower right"],
["center left", "center", "center right"],
["upper left", "upper center", "upper right"],
]
for i in range(3):
for j in range(3):
ax[i, j].plot(x, y1, label="sin")
ax[i, j].plot(x, y2, label="cos")
ax[i, j].legend(loc=locations[i][j])
上面的示例顯示了不同位置的圖例。
2.2. 圖例邊框
邊框可以設(shè)置邊框的背景色,邊框顏色和是否有陰影。
fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.plot(x, y1, label="sin") ax.plot(x, y2, label="cos") ax.legend(facecolor="lightblue", edgecolor="red", shadow=True)

上例中,背景色 lightblue,邊框 red,陰影設(shè)置為 True。
設(shè)置無邊框比較簡單,frameon=False 即可。
fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.plot(x, y1, label="sin") ax.plot(x, y2, label="cos") ax.legend(frameon=False)

2.3. 圖例分列
圖例默認(rèn)都是一列多行的格式,比如上面的的各個示例,圖例都是依次豎著排列下來的。
可以通過 ncol 屬性,讓圖例橫著排列。
fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) ax.plot(x, y1, label="sin") ax.plot(x, y2, label="cos") ax.legend(frameon=False, loc="upper center", ncol=2)

上面的示例,圖例(legend)設(shè)置為兩列,位于上方中間位置。
2.4. 多個圖例
一般的圖形都只有一個圖例,比如上面的都是這樣的,sin和cos都在一個圖例中。
如果圖例太多,或者多個圖例之間關(guān)系不大,也可以創(chuàng)建多個圖例。
from matplotlib.legend import Legend x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) y3 = np.sin(x + 1) y4 = np.cos(x + 1) fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) legends = [] legends += ax.plot(x, y1, label="sin1") legends += ax.plot(x, y2, label="cos1") legends += ax.plot(x, y3, label="sin2") legends += ax.plot(x, y4, label="cos2") ax.legend(legends[:2], ["sin1", "cos1"], loc="upper right") leg = Legend(ax, legends[2:], ["sin2", "cos2"], loc="lower left") ax.add_artist(leg)

上面的示例中的4個曲線,分成了2個圖例來說明。
一個圖例在右上角,一個圖例在左下角。
2.5. 圖例中不同大小的點
最后,介紹一種更復(fù)雜的圖例顯示方式。
首先生成主要幾個省市的人口散點圖(數(shù)據(jù)是網(wǎng)絡(luò)上搜索的),
生成圖例的時候,給3個主要的節(jié)點500萬人,5000萬人,1億人設(shè)置的點的大小比例與圖中的各個散點數(shù)據(jù)保持一致。
x = ["廣東", "山東", "江蘇",
"湖北", "浙江", "吉林",
"甘肅", "寧夏", "青海", "西藏"]
y = np.array([10432, 9578, 7866,
5723, 5442, 2745,
2557, 630, 562, 300])
fig = plt.figure(figsize=[10, 8])
plt.scatter(x, y, c=np.log10(y), s=y/16)
#創(chuàng)建圖例
for population in [500, 5000, 10000]:
plt.scatter([],[], c='b',
s=population/16,
alpha=0.3,
label=str(population)+" (萬人)")
plt.legend(scatterpoints=1,
labelspacing=1.5,
title="人口圖例",
frameon=False)
3. 總結(jié)
圖例可以設(shè)置成各式各樣,本篇介紹的圖例設(shè)置方式并不是僅僅為了美觀,
更重要的是利用這些設(shè)置方式幫助用戶能夠達(dá)成以下目的:
- 幫助觀察者快速了解圖像數(shù)據(jù):圖例提供了關(guān)于圖像數(shù)據(jù)的簡潔、易于理解的解釋,使得觀察者能夠快速了解圖像的主題和內(nèi)容。
- 幫助觀察者更好地理解圖像細(xì)節(jié):在一些復(fù)雜的圖像中,觀察者可能需要花費很多時間才能理解其中的細(xì)節(jié)。圖例可以提供關(guān)于圖像細(xì)節(jié)的額外信息,使得觀察者能夠更好地理解圖像。
- 幫助觀察者發(fā)現(xiàn)圖像中的異常或者重要信息:圖例可以用于指出圖像中的異?;蛘咧匾畔?,幫助觀察者更好地理解和分析圖像。
到此這篇關(guān)于Matplotlib繪圖基礎(chǔ)之圖例詳解的文章就介紹到這了,更多相關(guān)Matplotlib圖例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3 selenium 切換窗口的幾種方法小結(jié)
今天小編就為大家分享一篇python3 selenium 切換窗口的幾種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
git使用.gitignore設(shè)置不生效或不起作用問題的解決方法
下面小編就為大家?guī)硪黄猤it使用.gitignore設(shè)置不生效或不起作用問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
python flask中動態(tài)URL規(guī)則詳解
今天小編就為大家分享一篇python flask中動態(tài)URL規(guī)則詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
使用Pandas將inf, nan轉(zhuǎn)化成特定的值
今天小編就為大家分享一篇使用Pandas將inf, nan轉(zhuǎn)化成特定的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
兩行Python代碼實現(xiàn)pdf轉(zhuǎn)word功能
這篇文章主要為大家詳細(xì)介紹了如何利用兩行Python代碼就能實現(xiàn)pdf轉(zhuǎn)word功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
Python實現(xiàn)個人微信號自動監(jiān)控告警的示例
今天小編就為大家分享一篇Python實現(xiàn)個人微信號自動監(jiān)控告警的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

