Как показать легенду только для одного сюжета

На самом деле я строю 2 набора данных на одном графике, первый набор данных - это всего 1 файл, а второй набор данных содержит 15 файлов.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib notebook
filelist=[]
for i in range (1,16):
    filelist.append("/Users/Hrihaan/Desktop/Code/A_B_%s.txt" %i)
data1= pd.read_table('/Users/Hrihaan/Desktop/Code/A_B_0.txt', dtype=float, header=None, sep='\s+').values
for fname in Filelist:
    data= pd.read_table(fname, dtype=float, header=None, sep='\s+').values
    t=np.arange(1,100,1)
    x=data[:,1]
    y=data1[:,1]
    plt.xlabel('Time Interval (Hours)')
    plt.ylabel('Energy')
    plt.plot(t,x,'HandleVisibility','off',linewidth=0.40) #thought it would stop the legend option for this plot
    plt.plot(t,y,'maroon', linewidth=1.2,label='Reference')
    plt.legend()
    plt.show()

Но так как другой список файлов содержит 15 файлов, когда я только пытаюсь показать легенду для отдельного файла данных (data1), в окне легенды он появляется 15 раз. Можно ли отключить параметр легенды для списка файлов (15), чтобы в поле легенды одного файла данных он отображался только один раз? Любая помощь будет оценена.

1 ответ

Решение

Это быстрое решение

....
label_name = None
if fname == filelist[0]: label_name = 'Reference'
plt.plot(t,y,'maroon', linewidth=1.2,label=label_name)
....

элементы легенды привязаны к маркировке, если вы поставите None на этикетке он должен быть пустым.

В контексте вашего кода

импортировать панд как pd импортировать numpy как np

import matplotlib.pyplot as plt
%matplotlib notebook
filelist=[]
for i in range (1,16):
    filelist.append("/Users/Hrihaan/Desktop/Code/A_B_%s.txt" %i)
data1= pd.read_table('/Users/Hrihaan/Desktop/Code/A_B_0.txt', dtype=float, header=None, sep='\s+').values
for fname in filelist:
    data= pd.read_table(fname, dtype=float, header=None, sep='\s+').values
    t=np.arange(1,100,1)
    x=data[:,1]
    y=data1[:,1]
    plt.xlabel('Time Interval (Hours)')
    plt.ylabel('Energy')
    plt.plot(t,x,'HandleVisibility','off',linewidth=0.40) #thought it would stop the legend option for this plot

    label_name = None
    if fname == filelist[0]: label_name = 'Reference'
    plt.plot(t,y,'maroon', linewidth=1.2,label=label_name)
    plt.legend()
    plt.show()
Другие вопросы по тегам