Python 如何在使用*args&;打印时显示所有图例;海本

Python 如何在使用*args&;打印时显示所有图例;海本,python,matplotlib,seaborn,legend,Python,Matplotlib,Seaborn,Legend,我的数据和代码如下 w = [1,2,3,4,5,6,7,8,9,10] vals = [[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,8,8,8,8,7,1],[1,4,2,4,8,9,8,8,7,2]] def plot_compare(*id_nums): fig = plt.figure(figsize=(10, 5)) leg=[] for id_num in id_nums: rel = vals[id_num]

我的数据和代码如下

w = [1,2,3,4,5,6,7,8,9,10]
vals = [[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,8,8,8,8,7,1],[1,4,2,4,8,9,8,8,7,2]]

def plot_compare(*id_nums):
    fig = plt.figure(figsize=(10, 5))
    leg=[]
    for id_num in id_nums:
        rel = vals[id_num]
        sns.lineplot(x=w, y=rel)
        leg.append(id_num)
    fig.legend(labels=[leg],loc=5,);
plot_compare(0,2)
这个想法是用一个函数得到多个直线图(我的实际数据我有很多需要绘制的值) 当我像上面那样运行代码时,我得到的图如下。 线条图与我想要的完全一样,但是图例只是一个项目而不是两个项目(因为我已经绘制了两个线条图)。 我曾尝试将图例线移动到for循环内部,但没有任何用处。我想要一个5月的传奇作为线图。 有人能帮忙吗


您将图例作为列表的列表。改为使用图图例(标签=支腿,位置=5)

使用:

w = [1,2,3,4,5,6,7,8,9,10]
vals = [[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,8,8,8,8,7,1],[1,4,2,4,8,9,8,8,7,2]]

def plot_compare(*id_nums):
    fig = plt.figure(figsize=(10, 5))
    leg=[]
    for id_num in id_nums:
        rel = vals[id_num]
        sns.lineplot(x=w, y=rel)
        leg.append(id_num)
    fig.legend(labels=leg,loc=5)
    plt.show()
plot_compare(0,2)