Как всегда размещать осевую единицу в определенной позиции метки в Matplotlib?Python

Программы на Python
Ответить
Гость
 Как всегда размещать осевую единицу в определенной позиции метки в Matplotlib?

Сообщение Гость »


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


Изображение взято из Википедии, со страницы, посвященной 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' Есть ли хороший способ сделать это?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»