2014-10-16 3 views
-1

Для пользовательской функции рисования диаграмм мне нужно установить цвета прямоугольников. Этот код:Настройка цвета прямоугольника в matplotlib

# draw many rectangles 
for label in labels: 
    # derive coords... 
    rect = mpatches.Rectangle((x1, y1), width, height) 
    rects.append(rect) 

collection = PatchCollection(rects, alpha=0.3) 
ax.add_collection(collection) 

plt.savefig('test.png') 

Я хочу установить цвет для прямоугольников, полученных из метки. Если я снова вызову эту функцию (и изменится порядок надписей), тот же цвет должен быть присвоен прямоугольнику. Меня не интересует цветовая палитра (для каждой метки достаточно некоторых различимых цветов). Как мне это сделать?

Update

Возможные метки неизвестны, поэтому я не могу жёстко цветовую карту. Мне нужно что-то вроде хеш-функции, которая создает цвет (хеш-значение) на основе метки в качестве входа.

+0

Что означает «метка-> цвет»? Ярлык карты для цвета, или вы хотите сопоставить цвет с меткой? Если вы хотите сопоставить цвет с меткой, просто используйте свой цветной кортеж в качестве метки, не так ли? – tom10

+0

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

+0

@orange можете ли вы добавлять ключи при добавлении ярлыков? – Ajean

ответ

0

Если я правильно понял ваш вопрос, вы можете сделать это со словарем и map.

colordict = {'l1':'red', 'l2':'green', 'l3':'magenta'} 

# Then, where you do plotting: 
labels = ['l2', 'l1', 'l3'] 
colorlist = map(colordict.get, labels) 

Это дает colorlist, который будет соответствовать вашим цикл

['green', 'red', 'magenta'] 

Тогда, независимо от того, что порядок, та же метка не будет в конечном итоге с тем же цветом. Это зависит от вас, чтобы определить, что происходит с тем, что раньше времени.

Смежные вопросы