gpt4 book ai didi

python-3.x - 如何在 Plotly Gantt 图中指定其他颜色?

转载 作者:行者123 更新时间:2023-12-03 23:52:12 33 4
gpt4 key购买 nike

我正在使用 Plotly 绘制甘特图:

fig = ff.create_gantt(df, index_col='Resource', show_colorbar=True, group_tasks=True)

当索引在

index_col='Resource'

超过 10 出现错误:

plotly.exceptions.PlotlyError: Error. The number of colors in 'colors' must be no less than the number of unique index values in your group column.



我认为这是因为 Plotly 的默认颜色仅限于十种不同的颜色(例如 Plotly colours list )

我想要更多颜色( >= index of 'Resource' )。如何添加和定义它们?

编辑:
这是一个可用于测试的示例

from __future__ import print_function

from collections import defaultdict

from plotly.offline import plot
import plotly.figure_factory as ff
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile

import datetime



def gantt_test():
"""Solve a small flexible jobshop problem."""

# convert to date
serial = 43466.0 # 01.01.2019 Excel
seconds = (serial - 25569) * 86400.0 # convert to seconds
date_date = datetime.datetime.utcfromtimestamp(seconds)
date_string = date_date.strftime("%Y-%m-%d %H:%M:%S")

df = [dict(Task="machine_99", Start=0, Finish=1, Resource="job_99")]
df.clear()

start_value = 0 # in min
duration = 120 # in min

for i in range(1, 12):
b_dict = dict(Task="M " + str(i), Start=datetime.datetime.utcfromtimestamp((serial - 25569 + (start_value/(60*24.0))) * 86400.0).strftime("%Y-%m-%d %H:%M:%S"), Finish=datetime.datetime.utcfromtimestamp((serial - 25569 + (start_value +duration)/(60*24.0)) * 86400.0).strftime("%Y-%m-%d %H:%M:%S"), Resource="job " + str(i))
df.append(b_dict)
start_value = 10*i





fig = ff.create_gantt(df, index_col='Resource', show_colorbar=True, group_tasks=True)

plot(fig, filename='gantt-group-tasks-together.html')


gantt_test()



如果你改变

    for i in range(1, 12):   

小于

12



有用:
enter image description here

最佳答案

我通过改变让它工作

fig = ff.create_gantt(df, index_col='Resource', show_colorbar=True, group_tasks=True)



fig = ff.create_gantt(df, colors=colors, index_col='Resource', show_colorbar=True, group_tasks=True)

附加 colors如所示

    r = lambda: random.randint(0,255)
#print('#%02X%02X%02X' % (r(),r(),r()))
colors = ['#%02X%02X%02X' % (r(),r(),r())]

for i in range(1, 15):
b_dict = dict(Task="M " + str(i), Start=datetime.datetime.utcfromtimestamp((serial - 25569 + (start_value/(60*24.0))) * 86400.0).strftime("%Y-%m-%d %H:%M:%S"), Finish=datetime.datetime.utcfromtimestamp((serial - 25569 + (start_value +duration)/(60*24.0)) * 86400.0).strftime("%Y-%m-%d %H:%M:%S"), Resource="job " + str(i))
df.append(b_dict)
start_value = 10*i

colors.append('#%02X%02X%02X' % (r(),r(),r()))

现在为每个资源添加了随机颜色。

关于python-3.x - 如何在 Plotly Gantt 图中指定其他颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55965633/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com