2014-11-29 2 views
-1

Я хотел бы присвоить значения цвета, используя matplotlib или colormap. Более конкретно: если у меня есть небольшое значение (скажем, что -14 - наименьшее значение) и высокое значение (допустим, 86 - это самое высокое значение), я бы хотел напечатать объекты с низкими значениями больше красного , и объекты, у которых более высокие значения более зеленые (-14 -> полностью красные, 86 -> полностью зеленые). Для объектов со значениями от -14 до 86 я хотел бы присвоить им цвета между красным и зеленым.Назначить цвет значению

Я знаю, что есть цветовая палитра под названием «RdYlGr», которая идет от красно-желто-зеленого. Может быть, можно использовать эту карту? Но как?

В заключение: как я могу использовать цветовые карты maplotlib, чтобы отобразить число с плавающей точкой (например, 6,2 из диапазона от -14 до 86) к соответствующему шестигранной цвета строки (например «# A0CBE2»).

+0

Что вы подразумеваете под «печатью объекта». Вы хотите сравнить значения RGB как кортеж, или вы хотите использовать этот конкретный оттенок, чтобы покрасить что-то в сюжет и т. Д.? – tom10

+0

Мне нужно использовать имена цветов для сетевого x-модуля, например: nx.draw_networkx_nodes (G, pos, node_size = 3000, node_color = "# A0CBE2") Или есть ли более простое решение для модуля «networkx» "? – MarcFa

+0

@MarkFa: Этот вопрос был закрыт из-за отсутствия ясности. Чтобы исправить это, я добавил резюме в конце, которое, по моему мнению, является четким выражением вашего конкретного вопроса. Потребуем минутку, чтобы отредактировать его, если это необходимо, и я попытаюсь снова открыть вопрос (так как я думаю, что это должно решить проблему, и это важная тема). – tom10

ответ

0

Вы можете сделать большую часть этого непосредственно с помощью цветовых палитр, но matplotlib выдаёт значения rgb, а не hex, поэтому вам нужно сделать шестерку самостоятельно. Вот пример:

import matplotlib.cm as cm 
import matplotlib.colors as colors 

norm = colors.Normalize(vmin=-14, vmax=86) 
f2rgb = cm.ScalarMappable(norm=norm, cmap=cm.get_cmap('RdYlGn')) 

def f2hex(f2rgb, f): 
    rgb = f2rgb.to_rgba(f)[:3] 
    return '#%02x%02x%02x' % tuple([255*fc for fc in rgb]) 

print f2hex(f2rgb, -13.5) # gives #a60126 ie, dark red 
print f2hex(f2rgb, 85.5) # gives #016937 ie, dark green with some blue 
Смежные вопросы