Pylab: сопоставление меток с цветами

Я только начинаю со стека scipy. Я использую набор данных радужной оболочки глаза в версии CSV. Я могу загрузить его просто отлично, используя:

iris=numpy.recfromcsv("iris.csv")

и построить его:

pylab.scatter(iris.field(0), iris.field(1))
pylab.show()

Теперь я хотел бы также отобразить классы, которые хранятся в iris.field(4):

chararray(['setosa', ...], dtype='|S10')

Что такое элегантный способ сопоставить эти строки с цветами для построения? scatter(iris.field(0), iris.field(1), c=iris.field(4))не работает (из документов ожидаются плавающие значения или цветовая карта). Я не нашел элегантного способа автоматического создания цветной карты.

cols = {"versicolor": "blue", "virginica": "green", "setosa": "red"}
scatter(iris.field(0), iris.field(1), c=map(lambda x:cols[x], iris.field(4)))

делает примерно то, что я хочу, но мне не слишком нравится ручная спецификация цвета.

Правка: немного более элегантная версия последней строки:

scatter(iris.field(0), iris.field(1), c=map(cols.get, iris.field(4)))
6
задан Anony-Mousse 16 March 2012 в 16:26
поделиться