Хорошо, теперь я понимаю.Таким образом, вы хотите, чтобы matplotlib автоматически окрашивал ваши графики, но линии с одинаковой меткой должны иметь общий цвет и запись легенды.Что вы можете сделать, так это перебрать все строки и метки после создания графика.И каждый ярлык, который уже существует, получает один и тот же цвет, в то время как его запись в легенде перекрывается предыдущим подчеркиванием.(Метки с «_» в начале не отображаются в автоматической легенде):
names = ['a', 'b', 'c', 'a', 'c', 'd'] # sample labels
fig = plt.figure() # save your figure in a variable for later access
for i in range(5):
plt.plot([0,1], [i,i], label=names[i])
plt.legend() # still wrong legend for comparison purpose
ax = fig.gca() # get the current axis
for i, p in enumerate(ax.get_lines()): # this is the loop to change Labels and colors
if p.get_label() in names[:i]: # check for Name already exists
idx = names.index(p.get_label()) # find ist index
p.set_c(ax.get_lines()[idx].get_c()) # set color
p.set_label('_' + p.get_label()) # hide label in auto-legend
plt.legend(loc='center') # correct legend
перед циклом:
после цикла: