Мне нравится особый способ включения единиц измерения в графики:

Изображение взято из Википедии, со страницы, посвященной DIN 461.
Единица измерения всегда размещается на предпоследнем такте оси. Я хочу воссоздать такое поведение с помощью Matplotlib, и мне удалось изменить xlabels напрямую с помощью plt.gca().set_xticklabels(). Однако использование set_xticklabels не рекомендуется, поскольку оно перестает отображать правильные значения, как только вы масштабируете/панорамируете или делаете что-либо с графиком. Вместо этого я хотел бы иметь решение, в котором предпоследняя метка галочки всегда заменяется на единицу измерения.
Я попробовал написать собственный форматировщик тиковых меток и разместить единицу измерения в зависимости от позиции. Это еще не сработало из-за разного количества тиков, которые могут отображаться в зависимости от соотношения сторон масштабирования и т. д., а также из-за того, что pos по какой-то причине часто имеет значение None. В качестве альтернативы я использовал ax.set_xticks с некоторой функцией форматирования Formatter: ax.set_xticks(ax.get_xticks(), Formatter(ax.get_xticks())), но это показывает больше тиков, чем я хочу, а также не меняет тики при масштабировании .
из matplotlib.ticker import FuncFormatter @FuncFormatter защита my_formatter(x, pos): верните f"{x}" if pos != 6 else 'Unit' Есть ли хороший способ сделать это?
Мобильная версия