Я хочу создать пользовательский участок. Я хочу точно указать цвет каждого объекта. В частности, я создаю диаграмму Ганта для системных событий. Я классифицирую эти события на группы и кодирую их цвета для визуализации.Настройка цветов отдельно в matplotlib
Пожалуйста, обратите внимание на следующий код:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame()
df['y'] = [0,4,5,6,10]
df['color'] = [(.5, .5, .5, .5),]*len(df)
print df['color']
#fig = plt.figure(figsize=(12, 6))
#vax = fig.add_subplot(1,1,1)
#vax.hlines(df['y'], 0, 10, colors=df['color'])
#fig.savefig('ok.png')
only_four = df['y']==4
df['color'][only_four] = [(0.7, 0.6, 0.5, 0.4),]*sum(only_four)
print df['color']
Обратите внимание, что я первый я настройка цвета для всех, чтобы быть полупрозрачным серым. Позже, для определенного набора значений, я хочу изменить цвет. Я получаю эту таблицу цветов.
0 (0.5, 0.5, 0.5, 0.5)
1 0.6
2 (0.5, 0.5, 0.5, 0.5)
3 (0.5, 0.5, 0.5, 0.5)
4 (0.5, 0.5, 0.5, 0.5)
Я хочу, чтобы иметь возможность указать любое значение RGBA (т.е. включая прозрачность) для любого подмножества hlines. Может ли кто-нибудь поделиться, как это сделать? Я открыт для любого другого способа сделать это, пока я могу точно покрасить каждую строку, включая прозрачность.
ПРИСОЕДИНЕНИЕ К ВОПРОСУ: Я могу обновить несколько строк итерируя как в:
def set_color(df, row_bool, r, g, b, a=1.0):
idx = np.where(row_bool)[0]
for i in idx:
df['color'][i] = (r,g,b,a)
return
Этого вполне достаточно, но я действительно хотел операцию вектора (т.е. без явного цикла мной).
спасибо. Я собираюсь принять ваш ответ. Я действительно искал способ сделать это так, как в моем использовании «only_four». Это был только частный случай одной клетки. В общем случае он может содержать любое количество ячеек. Итак, я ищу массивный метод. Это сказало ваше предложение. Я обновлю вопрос, если кто-то еще посмотрит :) –