Исключая сюжеты в легенде, созданной для цикла с matplotlib - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь создать диаграмму с тремя цветами линий и хочу, чтобы в легенде для цвета и трендовой линии были только метки.Я провел некоторый поиск и обнаружил, что должен иметь возможность указать None для метки или «_nolegend_», но ни одна из них не работает для меня.Я также видел, что я мог бы сделать это с помощью художников в matplotlib, но на самом деле не знаю, как создать этих художников в цикле for.Любые предложения приветствуются, так как эта презентация скоро появится.

for teacher in range(3):
teach = ['c','b','t']
for student in range(1,6):
    std = teach[teacher] + str(student)
    df_att_std = df_att[df_att['Student']==std]
    print(df_att_std)
    styles_lst=['s', '^', 'o', 'x', '*']
    color_lst=['r', 'b', 'y']
    style = styles_lst[student-1]
    color = color_lst[teacher]
    week = df_att_std['Week']
    attitude = df_att_std['Attitude'] + teacher*.1
    var = f'l_{std}'
    if student == 1 and teacher == 0:
        plt.plot(week, attitude, c=color, marker=style, label = "Cheryl", alpha=.85)
    elif student == 1 and teacher == 1:
        plt.plot(week, attitude, c=color, marker=style, label = "Brenda", alpha=.85)
    elif student == 1 and teacher ==2:
        plt.plot(week, attitude, c=color, marker=style, label = "Travis", alpha=.85)
    else:
        plt.plot(week, attitude, c=color, marker=style, label='_nolegend_', alpha=.85)
    plt.plot(week, attitude, c=color, marker=style, alpha=.85)
    # Trendline
    x=df_att['Week']
    y=df_att['Attitude']
    z=numpy.polyfit(numpy.float32(x), numpy.float32(y), 1)
    p=numpy.poly1d(z)
    plt.plot(x,p(x), 'k--', linewidth=2)
yticks=['Somewhat Challenging', 'Neutral', 'Somewhat Positive', 
        'Positive']
plt.title("Teacher Student Relationship")
plt.xlabel('Week Number')
plt.ylabel('Attitude')
plt.yticks(ticks=[2,3,4,5], labels=yticks, rotation=30)
plt.xticks(ticks=[1,2,3,4,5])
plt.legend()
plt.show()

The Plot I am getting out

1 Ответ

0 голосов
/ 25 февраля 2019

Ошибка заключалась в том, что за пределами оператора if был график, который воспроизводил все строки.Спасибо ImportanceOfBeingEarnist за просмотр этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...