python - объекты меток сюжета не найдены ... почему? - PullRequest
0 голосов
/ 01 октября 2018

Я думал, что это простой код, но я продолжаю получать это сообщение об ошибке, и я не знаю почему:

UserWarning: Помеченные объекты не найдены.Используйте label = '...' kwarg на отдельных участках.warnings.warn («Помеченные объекты не найдены».

Я видел другие решения, в которых они говорили, что plt.legend () должна идти сразу после команды plot ... так что я тоже попробовал это, ноэто не сработало

Это код:

x_multi = [int(k[-3:]) for k in data_all_bands.keys()]
colors = ['blue', 'black', 'green', 'red']
for i in range(len(list(data_all_bands.values())[0])):
    y_multi = [v[i] for v in data_all_bands.values()]
    plt_multi = axes[0].scatter(x_multi, y_multi, label="channel" , color = colors[i])#, color=colors[i])
    plt.legend()

Сюжет действительно появляется, но только без метки ... в приведенном выше случае следует записать канал 4 раза для каждого цвета.

РЕДАКТИРОВАТЬ: Чтобы воспроизвести

data_all_bands является словарь и выглядит следующим образом:

2016050 [4.2958281793198241, 3.7025449821599157, 5.1717757645735025, 4.9954723025001719]
2016178 [4.0679016016577032, 2.890807214158575, 4.9627629940324081, 4.8505350289087952]
2016290 [3.6947496139720259, 3.1549071645707891, 4.5131724769284824, 4.4082219917836483]
2016114 [3.6302508875834567, 2.9879816559435759, 4.4887321676347716, 4.4042679859883815]

1 Ответ

0 голосов
/ 01 октября 2018

Похоже, вы создаете фигуру с несколькими вспомогательными участками, но строите графики только на первом.Вы также используете комбинацию объектно-ориентированного API (axes.scatter) и конечного автомата pyplot (plt.legend).

Итак, когда вы вызываете plt.legend, он ищет метки в одном изваши пустые участки и дает вам предупреждение, которое вы видите.Одним из решений будет создание легенды для подзаговоров, для которых вы планируете использовать axes[0].legend():

for i in range(len(list(data_all_bands.values())[0])):
    y_multi = [v[i] for v in data_all_bands.values()]
    plt_multi = axes[0].scatter(x_multi, y_multi, label="channel" , color = colors[i])#, color=colors[i])
    axes[0].legend()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...