Я пытаюсь создать диаграмму с тремя цветами линий и хочу, чтобы в легенде для цвета и трендовой линии были только метки.Я провел некоторый поиск и обнаружил, что должен иметь возможность указать 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()
