как затенить точки в разбросе на основе карты цветов в matplotlib?

Я пытаюсь затенить точки на точечной диаграмме на основе набора значений (от 0 до 1 ), выбранных из одной из уже определенных цветовых карт, таких как синий или красный. Я пробовал это:

import matplotlib
import matplotlib.pyplot as plt
from numpy import *
from scipy import *
fig = plt.figure()
mymap = plt.get_cmap("Reds")
x = [8.4808517662594909, 11.749082788323497, 5.9075039082855652, 3.6156231827873615, 12.536817102137768, 11.749082788323497, 5.9075039082855652, 3.6156231827873615, 12.536817102137768]
spaced_colors = linspace(0, 1, 10)
print spaced_colors
plt.scatter(x, x,
            color=spaced_colors,
            cmap=mymap)
# this does not work either
plt.scatter(x, x,
            color=spaced_colors,
            cmap=plt.get_cmap("gray"))

Но это не работает, используя либо карту красных, либо серых цветов. Как это может быть сделано?

редактировать:если я хочу построить каждую точку отдельно, чтобы у нее была отдельная легенда, как я могу это сделать? Я пытался:

fig = plt.figure()
mymap = plt.get_cmap("Reds")
data = np.random.random([10, 2])
colors = list(linspace(0.1, 1, 5)) + list(linspace(0.1, 1, 5))
print "colors: ", colors
plt.subplot(1, 2, 1)
plt.scatter(data[:, 0], data[:, 1],
           c=colors,
           cmap=mymap)
plt.subplot(1, 2, 2)
# attempt to plot first five points in five shades of red,
# with a separate legend for each point
for n in range(5):
    plt.scatter([data[n, 0]], [data[n, 1]],
               c=[colors[n]],
               cmap=mymap,
               label="point %d" %(n))
plt.legend()

но это не удается. Мне нужно сделать вызов для разброса для каждой точки, чтобы она могла иметь отдельную метку =, но все же хочу, чтобы каждая точка имела другой оттенок цветовой карты в качестве своего цвета. Благодарю.

19
задан 9 August 2012 в 17:56
поделиться