#python #matplotlib #data-visualization
#python #matplotlib #визуализация данных
Вопрос:
У меня есть этот код:
import matplotlib.pyplot as plt
plt.figure(figsize=[13, 8])
for x in range(10):
labels = pred_labels[:len(predict)]
plt.scatter(tnse[:, 0][labels == x], tnse[:, 1][labels == x], label=x)
plt.legend(fontsize='large')
plt.title('MNIST predictions')
plt.show()
У меня есть predict
— maxtrix, который является выводом нейронной сети и pred_label
который является вектором чисел [0..9]
Код должен отображать что-то вроде этого:
И это так, но каждая группа точек имеет разный цвет каждый раз, когда я хочу их отобразить. Есть ли способ придать им постоянный цвет?
Я пытался использовать это:
plt.scatter(tnse[:, 0][labels == x], tnse[:, 1][labels == x], label=x, c=x)
Но это не сработало
Ответ №1:
Решение, которое я часто использую :
- создайте
N
цвета из цветовой карты, - укажите цвет для каждого графика.
Вот минимальный пример, вдохновленный вашим :
import matplotlib.pyplot as pp
from numpy import random, linspace
# datas
x, y = [], []
for _ in range(10):
x.append(random.rand() .1 * random.rand(32))
y.append(random.rand() .1 * random.rand(32))
# colors
colors = pp.cm.plasma(linspace(0, 1, 10))
# plot
pp.close(0)
pp.figure(0)
for color, i in zip(colors, range(10)):
pp.plot(x[i], y[i], 'o', label=f"{i}", mec=color, mfc=color)
pp.legend()
pp.show()
Ответ №2:
Вы можете использовать itertools для циклирования более 10 цветов (придавая одинаковый цвет каждому классу при каждом его запуске). Просто замените colors
свои цвета для цикла
import itertools
colors = itertools.cycle([colors])
plt.scatter(tnse[:, 0][labels == x], tnse[:, 1][labels == x], label=x, color=next(colors))
РЕДАКТИРОВАТЬ: согласно комментарию ниже
Комментарии:
1. В этом случае все они будут красными. Цвета должны быть разными для всех классов, но одинаковыми для каждого графика