2017-08-13 3 views
0

Je voulais lire 5 csv fichiers. J'ai la fonction suivante qui trace les graphiques séparément et je voulais ajouter une légende à chaque intrigue. Cependant, j'obtiens cet avertissement que la légende n'est pas ajoutée aux parcelles même si j'ai une étiquette ajoutée à ma fonction.L'étiquette de légende n'est pas ajoutée pour plusieurs tracés en python

UserWarning: No labelled objects found. Use label='...' kwarg on individual plots. warnings.warn("No labelled objects found. "

import pandas as pd 
import matplotlib.pyplot as plt 


df1 = pd.read_csv('test1.csv') 
df2 = pd.read_csv('test2.csv') 
df3 = pd.read_csv('test3.csv') 
df4 = pd.read_csv('test4.csv') 
df5 = pd.read_csv('test5.csv') 


def runplot(df, title, label): 
    rows, cols = df.shape 

    fig, ax = plt.subplots() 
    ax.plot(df['price'].values, df['cost'].values) 
    ax.legend() 


    plt.title(title) 
    plt.annotate('test!', 
       xy=(rows, df.ix[rows-1,'cost']), 
       xycoords='data', 
       xytext=(-30,30), 
       textcoords='offset points', 
       arrowprops=dict(arrowstyle="->")) 


runplot(df1, 'test1.csv', label='test1') 
runplot(df2, 'test2.csv', label='test2') 
runplot(df3, 'test3.csv', label='test3') 
runplot(df4, 'test4.csv', label='test4') 
runplot(df5, 'test5.csv', label='test5') 

Comment pouvons-nous faire le spectacle de légende dans les parcelles?

Répondre

0

Définissez lebel argument lors de l'intrigue et utilisez handle pour créer une légende. Essayez d'écrire comme ceci:

def runplot(df, title, label): 
    rows, cols = df.shape 

    fig, ax = plt.subplots() 
    line1, = ax.plot(df['price'].values, df['cost'].values, label=label) 
    ax.legend(handles=[line1]) 

    plt.title(title) 
    plt.annotate('test!', 
       xy=(rows, df.ix[rows-1,'cost']), 
       xycoords='data', 
       xytext=(-30,30), 
       textcoords='offset points', 
       arrowprops=dict(arrowstyle="->"))