Создание легенды Matplotlib для трехмерной двухосевой диаграммы рассеяния - PullRequest
0 голосов
/ 28 апреля 2020

Я делаю диаграмму рассеяния с помощью matplotlib на основе словаря, в котором словарь отображает двухэлементный кортеж в целочисленное значение. Координата, представленная кортежем, выводится на график, а затем окрашивается в зависимости от значения целого числа, в которое она отображается.

xs = [tup[0] for tup in list(mydict.keys())]
ys = [tup[1] for tup in list(mydict.keys())]
colors = ['g' if outcome > 0 else 'r' for outcome in list(mydict.values())]
plt.figure()
plt.subplot(211)
plt.scatter(xs, ys, c = colors, alpha = 0.5, s = 4)

Я хочу поместить легенду в верхнем правом углу этого точечного графика, показывающую, что красная точка означает «Неэффективно», а зеленая точка означает «Эффективно». Поскольку я рисую обе цветные точки в одной линии, я не могу (или не знаю, как) назначить цветам отдельные параметры метки. Итак, как мне создать легенду?

1 Ответ

1 голос
/ 29 апреля 2020

Вот простое решение.

xs = np.array([tup[0] for tup in list(mydict.keys())])
ys = np.array([tup[1] for tup in list(mydict.keys())])
outcomes = np.array([outcome for outcome in list(mydict.values())])
plt.figure()
plt.subplot(211)
plt.scatter(xs[outcomes==0], ys[outcomes==0], c = colors, alpha = 0.5, s = 4, label = 'Ineffective')
plt.scatter(xs[outcomes==1], ys[outcomes==1], c = colors, alpha = 0.5, s = 4, label = 'Effective')
plt.legend(loc='upper right')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...