Как я могу отображать данные с несколькими маркерами, несколькими цветами в Matplotlib - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в matplotlib, и сегодня я хочу спросить о моей текущей проблеме. Пожалуйста, смотрите мой код:

x = [1,2,3,4,5,6,7,8,9,10]
y = [1,2,3,4,5,6,7,8,9,10]
colors = [0,1,1,0,1,4,1,3,2,4]
sizes = [500,500,300,300,300,500,500,300,300,300]
map1 = plt.cm.get_cmap("jet", 5)
plt.scatter(x[0:3], y[0:3], c=colors[0:3] ,s=sizes[0:3],marker="*",cmap=map1)
plt.scatter(x[3:6], y[3:6], c=colors[3:6] ,s=sizes[3:6],marker="<",cmap=map1)
plt.scatter(x[6:10], y[6:10], c=colors[6:10], s=sizes[6:10],marker="D",cmap=map1)
plt.colorbar(ticks=range(5))
plt.clim(-0.5, 4.5)
plt.show()

Изображение результата

Проблема в том, что я не могу получить результат с несколькими маркерами и несколькими цветами. Как вы можете видеть, у меня есть тестовый набор данных с 10 элементами, и я хочу показать 1 -> 3 элемент с маркером *, и цвет совместим с массивом цветов (1-й элемент будет 0 цвета, 2-й элемент будет 1 цвет)... Как и в результате изображения, только цвет последнего из plt.scatter будет истинным. Я не понимаю, где я не прав. Пожалуйста, дайте мне несколько решений. Большое спасибо

1 Ответ

0 голосов
/ 07 мая 2018

Вам нужно будет использовать одинаковую нормализацию цвета для всех графиков рассеяния. Эта нормализация должна охватывать весь диапазон возможных значений цвета. В противном случае первый рассеиватель не знает о диапазоне второго рассеяния и т. Д.

import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8,9,10]
y = [1,2,3,4,5,6,7,8,9,10]
colors = [0,1,1,0,1,4,1,3,2,4]
sizes = [500,500,300,300,300,500,500,300,300,300]
map1 = plt.cm.get_cmap("jet", 5)
norm = plt.Normalize(min(colors),max(colors))
kw = dict(cmap=map1, norm=norm)
plt.scatter(x[0:3], y[0:3], c=colors[0:3] ,s=sizes[0:3],marker="*",**kw)
plt.scatter(x[3:6], y[3:6], c=colors[3:6] ,s=sizes[3:6],marker="<",**kw)
plt.scatter(x[6:10], y[6:10], c=colors[6:10], s=sizes[6:10],marker="D",**kw)
plt.colorbar(ticks=range(5))
plt.clim(-0.5, 4.5)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...