[英]No legends Seaborn lineplot
當我使用 Seaborn 在同一軸上制作具有多個線圖的線圖時,不會創建任何圖例。 即使我在 sns.lineplot 中為圖例提供參數“brief”或“full”,也沒有任何顯示,並且調用 ax.get_legend_handles_labels() 返回兩個空列表。
如何在右側的框中添加圖例,將線條的顏色與名稱相關聯?
import seaborn as sns
import matplotlib.pyplot as plt
import random
fig1 = plt.figure(figsize=(12, 12))
ax = fig1.add_subplot(1, 1, 1)
x = range(10)
series = list()
for i in range(3):
y_i = list()
for j in range(10):
y_i.append(random.randint(0, 50))
sns.lineplot(x=x, y=y_i, ax=ax, legend='brief')
plt.show()
那是因為您將簡單列表應用為 x 和 y 數據。 它們沒有名稱或標簽等元數據。 您可以通過label
-kwarg 添加標簽,例如:
sns.lineplot(x=x, y=y_i, ax=ax, legend='brief', label=str(i))
或者您決定為您的數據使用 pandas 系列對象或數據框,它們能夠提供列名。
您還可以在創建繪圖后在單獨的調用中添加圖例:
ax.legend(['label 1', 'label 2', 'label 3'])
它在您使用二維數組而不是循環中的多個值列表創建線圖的情況下很有用。 在您的情況下,這可能如下所示:
data = np.random.randint(0, 50, size=(10, 3)) # results in 3 lines of length 10 each
sns.lineplot(data=data, ax=ax)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.