Вы должны быть осторожны с количеством оттенков, которые могут иметься в вашем наборе данных, а также с количеством категорий и так далее. Если у вас есть N категорий, то каждая из них отображается в координатах оси 0,1, ..., N-1. Затем различные оттенки строятся по центру вокруг этой координаты. Для 2 оттенков, как в вашем примере, столбцы имеют значения x ± 0,2
fig, ax = plt.subplots()
bar = sns.barplot(data=df, x="model", hue="time", y="value", edgecolor="white")
ax.set_xticks([-0.2,0.2, 0.8,1.2])
ax.set_xticklabels(["on/short","on/long",'off/short','off/long'])
Обратите внимание, что я настоятельно рекомендую использовать order=
и hue_order=
при вызове barplot()
, чтобы убедиться, что ваши метки соответствуют полосам.