所以我用 Plotly 的 Dash 创建了一个甘特图,如果不是 x 轴刻度,我会很高兴。
这是我的图表:
不错,但对于 x 轴刻度。我想定制它们以满足我的需求:
我希望他们从周一(1 月 4 日)开始,而不是周日(1 月 10 日),并像他们已经做的那样每周继续
刻度标签应该是这样的:“KW: 01 ('21)”,而不是“04 Jan”。在这里,KW 应该是指日历周。
我不想显示每个刻度标签。如果图表只显示一年的第一个 KW 和每五分之一,那就太好了
所以,我一直在寻找一种方法来做到这一点,并在Plotly Layout References (xaxis-tickvals)中发现应该有一种平滑的方法来做到这一点。我只需要图表中位置的刻度值列表和标签的刻度文本列表,并且需要将刻度模式设置为“数组”。
由于我的代码太长,我只提供一个小例子。假设这是我的代码:
import plotly.figure_factory as ff
import datetime
df = [dict(Task="Job A", Start='2021-01-08', Finish='2021-01-29'),
dict(Task="Job B", Start='2021-01-15', Finish='2021-02-12'),
dict(Task="Job C", Start='2021-01-29', Finish='2021-02-19'),
dict(Task="Job D", Start='2021-02-05', Finish='2021-02-26')]
my_figure = ff.create_gantt(df, showgrid_x=True, showgrid_y=True)
weeks_ticktext = ['KW: 01 (\'21)', '', '', '', 'KW: 05 (\'21)', '', '', '', '']
weeks_tickvals = [datetime.datetime(2021, 1, 4, 0, 0), datetime.datetime(2021, 1, 11, 0, 0),
datetime.datetime(2021, 1, 18, 0, 0), datetime.datetime(2021, 1, 25, 0, 0),
datetime.datetime(2021, 2, 1, 0, 0), datetime.datetime(2021, 2, 8, 0, 0),
datetime.datetime(2021, 2, 15, 0, 0), datetime.datetime(2021, 2, 22, 0, 0),
datetime.datetime(2021, 3, 1, 0, 0)]
my_figure.layout.xaxis['tickmode'] = 'array'
my_figure.layout.xaxis['tickvals'] = weeks_tickvals
my_figure.layout.xaxis['ticktext'] = weeks_ticktext
my_figure.show()
然后,此代码将生成以下图表:
现在,我不明白为什么 x 轴没有启动,也没有按照我想要的方式显示。
我也在Dash Community中问过同样的问题,但到目前为止没有得到任何帮助。
我很感谢任何评论!