Я только начинаю со стека 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)))