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

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

Получил xticks, заменил предпоследнюю метку на единицу и установил xticks:
xticks = ax.get_xticks() xtick_labels = список (xticks) xtick_labels[-2] = "мА" ax.set_xticks(xticks, labels=xtick_labels) В углах появляются новые галочки и меняются пределы x:

При увеличении отметки больше не обновляются, а метка объекта исчезает.
