Согласно документации, он должен масштабироваться, когда указывается числовой индекс c. Однако, глядя на код, кажется, что минимальные / максимальные значения жестко закодированы в 0 и 100. См. code , строки 285 и 286.
Один из обходных путей - масштабирование индекса в диапазоне от 0 до 100 и вручную установите метки цветовой полосы на исходные минимальные / максимальные значения:
import warnings
warnings.filterwarnings('ignore', category=FutureWarning) # plotly returns a FutureWarning due to using .ix
from sklearn import preprocessing
import plotly.figure_factory as ff
# create a dataframe for easier processing wrt the scaled index
df = pd.DataFrame([dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Complete=10),
dict(Task="Job B", Start='2008-12-05', Finish='2009-04-15', Complete=60),
dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Complete=995)])
# scale index (0-100) and add as new column
min_max_scaler = preprocessing.MinMaxScaler()
index_scaled = min_max_scaler.fit_transform(df.Complete.values.reshape(-1,1))
df['index_scaled'] = index_scaled * 100
# create figure based on scaled index
fig = ff.create_gantt(df, index_col='index_scaled', colors='Viridis', show_colorbar=True)
# set scale of color bar
fig.data[-1]['marker']['cmin'] = df.Complete.min()
fig.data[-1]['marker']['cmax'] = df.Complete.max()
fig.data[-2]['marker']['cmin'] = df.Complete.min()
fig.data[-2]['marker']['cmax'] = df.Complete.max()
# Due to indexing on the scaled value, the tooltip of the bars shows this values instead of its original.
# You could iterate over them and adjust, but you'll need to match the sorting of fig.data to the sorting of the dataframe.
# fig.data[0].name = original_value
fig.show()
Обратите внимание, что, как уже упоминалось в комментариях выше, вам может потребоваться позаботиться о всплывающей подсказке для полос (отображая индексированное значение). Они также могут быть установлены вручную, но вам нужно будет сопоставить порядок в fig.data с порядком вашего исходного кадра данных.