此代碼以簡(jiǎn)單的方式給Series 1添加了一個(gè)圖例,并將其位置設(shè)置為最佳顯示位置。

同時(shí)顯示多個(gè)Legend

在一些情況下,我們可能需要在同一張圖中顯示多個(gè)Legend。然而,直接使用plt.legend()進(jìn)行多次調(diào)用時(shí),后一個(gè)Legend會(huì)覆蓋前一個(gè)。因此,我們需要使用add_artist()方法來(lái)解決這個(gè)問(wèn)題。

使用plt.gca().add_artist()函數(shù)

如果我們使用plt.plot()函數(shù)來(lái)繪制圖表,可以通過(guò)plt.gca().add_artist()來(lái)添加多個(gè)Legend。

plt.plot([1, 2, 3], [3, 6, 9], label='Label 1')
l1 = plt.legend(loc='upper right')
plt.legend(loc='upper left')
plt.gca().add_artist(l1)
plt.show()

通過(guò)add_artist方法,我們可以確保第一個(gè)Legend不會(huì)被第二個(gè)覆蓋。

使用ax.plot()與add_artist結(jié)合

在使用ax.plot()時(shí),我們可以采用類似的方法。

from matplotlib.figure import Figure
f = Figure(figsize=(16, 6), dpi=100)
a = f.add_subplot(111)
l1 = a.legend(loc='upper right')
a.legend(loc='upper left')
f.gca().add_artist(l1)

此方法確保Legend可以正確顯示在不同的位置。

調(diào)整Legend的外觀

在繪制圖表時(shí),調(diào)整Legend的外觀有助于提升圖表的可讀性和視覺(jué)效果。我們可以通過(guò)設(shè)置顏色、字體和透明度來(lái)實(shí)現(xiàn)這一點(diǎn)。

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerTuple

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
fig, ax = plt.subplots()
p1, = ax.plot(x, y, marker='.', markersize=6, color='tab:red')
plt.legend(loc='best')
ax.legend([(p1,)], ['Combined'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=1)})
plt.show()

調(diào)整后圖例示例

通過(guò)這種方式,我們可以調(diào)整Legend的顏色與曲線顏色保持一致。

解決Legend顯示警告

在使用Matplotlib時(shí),有時(shí)會(huì)遇到No handles with labels found to put in legend的警告。這通常是由于圖例未正確關(guān)聯(lián)數(shù)據(jù)系列的標(biāo)簽所致。為了解決這個(gè)問(wèn)題,我們可以在ax.plot()時(shí)添加label參數(shù)。

p1, = ax.plot(x, y, marker='.', label='Series 1', markersize=6, color='tab:red')

通過(guò)添加label,確保每個(gè)數(shù)據(jù)系列都有一個(gè)標(biāo)簽與之對(duì)應(yīng)。

Matplotlib中更高級(jí)的Legend配置

除了基本的Legend顯示和調(diào)整,Matplotlib還允許我們進(jìn)行更高級(jí)的配置,比如設(shè)置透明度和邊框等。

設(shè)置Legend透明度

我們可以通過(guò)設(shè)置framealpha參數(shù)來(lái)調(diào)整Legend的透明度。

plt.legend(loc='lower center', frameon=False, framealpha=0.5)

在圖例中顯示不同尺寸的點(diǎn)

使用Matplotlib,我們可以在圖例中顯示不同尺寸的點(diǎn),以更好地展示數(shù)據(jù)特性。

import pandas as pd
cities = pd.read_csv('california_cities.csv')
latitude, longitude = cities['latd'], cities['longd']
plt.scatter(latitude, longitude, c='b', s=100, alpha=0.5)
for area in [100, 300, 500]:
    plt.scatter([], [], c='k', alpha=0.3, s=area, label=str(area)+' km2')
plt.legend(scatterpoints=1, frameon=False, labelspacing=1, title='City Area')
plt.show()

不同尺寸點(diǎn)示例

結(jié)論

通過(guò)本文的介紹,我們可以看到,Matplotlib提供了多種方式來(lái)實(shí)現(xiàn)多個(gè)Legend的顯示和調(diào)整。在實(shí)際應(yīng)用中,我們可以根據(jù)圖表的需求,選擇合適的方法來(lái)配置Legend,從而提升圖表的可讀性和美觀性。

FAQ

  1. 問(wèn):如何在Matplotlib中實(shí)現(xiàn)多個(gè)Legend的顯示?

  2. 問(wèn):警告“No handles with labels found to put in legend”如何解決?

  3. 問(wèn):如何調(diào)整Legend的透明度?

  4. 問(wèn):如何在圖例中顯示不同尺寸的點(diǎn)?

  5. 問(wèn):如何確保Legend與曲線顏色一致?

上一篇:

百度在線翻譯api:高效的語(yǔ)言轉(zhuǎn)換工具

下一篇:

千問(wèn)COT:引領(lǐng)語(yǔ)言模型與思維鏈的革新
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)