如何只显示一个情节的传奇

时间:2018-03-25 01:24:10

标签: python pandas numpy legend

我实际上在一个图中绘制了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 个答案:

答案 0 :(得分:1)

这是一个快速修复

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

图例项目与标签相关联,如果您在标签中放置None,则应将其空白。

在您的代码的上下文中

将pandas导入为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()