Как преобразовать значения данных в информацию о цвете для matplotlib?

Я использую класс matplotlib.patches.Polygon для рисования полигонов на карте. Фактически, дана информация о координатах углов полигонов и значения данных с плавающей запятой для каждого "многоугольника". Теперь я хотел бы преобразовать эти значения данных (от 0 до 3e15) в информацию о цвете, чтобы визуализировать ее хорошо. Какова наилучшая практика для этого в Python?

Отрывок моего кода:

poly = Polygon( xy, facecolor=data, edgecolor='none')
plt.gca().add_patch(poly)

Ответ 1

В системе цветов RGB для каждого цвета, красного, зеленого и синего используются два бита данных. Это означает, что каждый цвет работает по шкале от 0 до 255. Черный будет 00,00,00, а белый - 255 255 255. Matplotlib имеет множество предопределенных цветовых палитр для вас. Все они нормализованы до 255, поэтому они работают от 0 до 1. Таким образом, вам нужно только нормализовать свои данные, тогда вы можете вручную выбрать цвета с цветовой карты следующим образом:

>>> import matplotlib.pyplot as plt

>>> Blues = plt.get_cmap('Blues')
>>> print Blues(0)
(0.9686274528503418, 0.9843137264251709, 1.0, 1.0)
>>> print Blues(0.5)
(0.41708574119736169, 0.68063054575639614, 0.83823145908467911, 1.0)
>>> print Blues(1.0)
(0.96555171293370867, 0.9823452528785257, 0.9990157632266774, 1.0)

Вот все предопределенные цветовые карты. Если вы заинтересованы в создании собственных цветных карт, здесь - хороший пример. Кроме того, здесь является документом от IBM о том, как тщательно выбирать цвета, что вам следует учитывать, если вы используете цвет для визуализации данных.

Ответ 2

Чтобы преобразовать значение из значения от 0 до + бесконечности в значение, которое идет от 0.0 до 1.0

import matplotlib.pyplot as plt

price_change =  price_change ** 2 / (1 + price_change ** 2)
Blues = plt.get_cmap('Blues')
print Blues(price_change)

Полный список цветовых папок приведен здесь: http://matplotlib.org/users/colormaps.html

Ответ 3

Я думаю, что вы ищете ColorMap. См. Следующий пост для получения информации об использовании тех, которые предоставляются matplotlib.

Использование Colormaps для установки цвета линии в matplotlib

Если вы хотите сделать свой собственный, страница ниже дает хороший пример.

http://code.activestate.com/recipes/52273-colormap-returns-an-rgb-tuple-on-a-0-to-255-scale-/