Как отформатировать стиль номера метки?

#python-3.x #matplotlib

#python-3.x #matplotlib

Вопрос:

Как мне использовать числовой формат, например x0.00%, для метки числового значения на метке метки Matplotlib по оси x или y? Например, я бы хотел, чтобы число 0.00125 отображалось как метка 0.125%. Я строю гистограммы с 1, 2 и 3 сигмами ежедневной доходности акций. Обычно значения находятся в диапазоне менее 1,00%, но иногда могут составлять> 10,0000% для /- 3 сигм. Таким образом, у меня будут метки размером от 0,0010% до 10,0000%. Да, хвосты толстые; акции торгуются слабо; или происходит сбой / восстановление flash. Спасибо за вашу помощь.

Комментарии:

1. Вы пробовали использовать a PercentFormatter ? Он не был написан с учетом жирных хвостов или сбоев flash, но, тем не менее, может помочь.

Ответ №1:

Вы могли бы использовать matplotlib.ticker , который поможет вам отформатировать каждую галочку. В этом примере кода я округлил каждое значение до трех знаков после запятой и заменил знак минус на тот, который я хотел.

Вы можете добавить условные операторы для разных значений x или y и указать, какой тип метки вы хотите!

 import matplotlib.ticker as ticker

@ticker.FuncFormatter
def major_formatter(y, pos):
    label = "-"   str(-round(y, 3)) if y < 0 else str(round(y, 3))
    return label

ax.yaxis.set_major_formatter(major_formatter)

@ticker.FuncFormatter
def major_formatter(x, pos):
    label = "-"   str(-round(x, 3)) if x < 0 else str(round(x, 3))
    return label

ax.xaxis.set_major_formatter(major_formatter)