【问题标题】:Trying to create colors dynamically for a Gantt Chart尝试为甘特图动态创建颜色
【发布时间】:2021-02-18 16:31:43
【问题描述】:

我试图弄清楚如何为数据框中的每个唯一“任务”获取不同的颜色。有没有办法做到这一点?正如你在这里看到的,我所有的颜色都是硬编码的。我想动态生成颜色。

import plotly.express as px
import pandas as pd
import plotly.figure_factory as ff


color = ['#B0171F',
        '#DC143C',
        '#FFB6C1',
        '#FFAEB9',
        '#EEA2AD',
        '#CD8C95',
        '#8B5F65',
        '#FFC0CB',
        '#FFB5C5',
        '#EEA9B8',
        '#CD919E',
        '#8B636C',
        '#DB7093',
        '#FF82AB',
        '#EE799F',
        '#CD6889',
        '#8B475D',
        '#FFF0F5',
        '#EEE0E5',
        '#CDC1C5',
        '#8B8386',
        '#FF3E96',
        '#EE3A8C',
        '#CD3278',
        '#8B2252',
        '#FF69B4',
        '#FF6EB4',
        '#EE6AA7',
        '#CD6090',
        '#8B3A62',
        '#872657',
        '#FF1493',
        '#EE1289',
        '#CD1076',
        '#8B0A50',
        '#FF34B3',
        '#EE30A7',
        '#CD2990',
        '#8B1C62',
        '#C71585',
        '#D02090',
        '#DA70D6',
        '#FF83FA']

fig = ff.create_gantt(df, colors=color, index_col='Task',
                      show_colorbar=True, bar_width=0.3, showgrid_x=True, showgrid_y=True, group_tasks=True, show_hover_fill=True)

fig.show()

此代码生成如下所示的图表。

【问题讨论】:

标签: python python-3.x plotly gantt-chart


【解决方案1】:

这是最终版本的代码。

df = df_final
df.rename(columns = {"real_estate_complete": "Start"}, inplace=True)
df.rename(columns = {"construction_started": "Finish"}, inplace=True)
df.rename(columns = {"local_market": "Task"}, inplace=True)
n = df.Task.nunique()

import matplotlib, random

hex_colors_dic = {}
rgb_colors_dic = {}
hex_colors_only = []
for name, hex in matplotlib.colors.cnames.items():
    hex_colors_only.append(hex)
    hex_colors_dic[name] = hex
    rgb_colors_dic[name] = matplotlib.colors.to_rgb(hex)

color = random.sample(hex_colors_only, n)

import plotly.express as px
import pandas as pd
import plotly.figure_factory as ff

fig = ff.create_gantt(df, colors=color, index_col='Task',
                      show_colorbar=True, bar_width=0.3, showgrid_x=True, showgrid_y=True, group_tasks=True, show_hover_fill=True)

fig.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    相关资源
    最近更新 更多