没有传说Seaborn线图

时间:2019-04-30 07:40:54

标签: python matplotlib seaborn

当我使用Seaborn绘制在同一轴上具有多个线图的线图时,不会创建图例。即使我在sns.lineplot中为图例提供参数“ brief”或“ full”,也不会显示任何内容,调用ax.get_legend_handles_labels()会返回两个空列表。

如何在右侧的框中添加图例,以将线条的颜色链接到名称?

enter image description here

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()

2 个答案:

答案 0 :(得分:1)

那是因为您将简单列表应用为x和y数据。它们没有名称或标签之类的元数据。不过,您可以在label-kwarg处添加标签,例如:

sns.lineplot(x=x, y=y_i, ax=ax, legend='brief', label=str(i))

或者您决定使用pandas系列对象或数据框作为数据,它们可以提供列名。

答案 1 :(得分:1)

创建图后,您还可以在单​​独的调用中添加图例:

ax.legend(['label 1', 'label 2', 'label 3'])

在使用2D数组而不是循环中的多个值列表创建线图的情况下,它很有用。您的情况如下所示:

data = np.random.randint(0, 50, size=(10, 3))  # results in 3 lines of length 10 each
sns.lineplot(data=data, ax=ax)