Допустим, подписи к отметкам на горизонтальной оси у графика выглядят так:
А хочется заменить «4000» на «четыретыщи»:
Для этого перед сохранением файла и перед plt.show()
пишем код:
1 | from matplotlib.ticker import FuncFormatter |
Вторая строка определяет функцию my_formatter(x, pos)
, зависящую от двух переменных: x — значение подписи к отметки, pos — позиция подписи (наверное).
Третья строка описывает, что должна выполнять данная функция, а именно она должна возвращать str('%.0f' % x).replace('-', u'–').
В моём случае нужно взять '%.0f' % x
, т.е. целую часть (чтобы получить 3 цифры после запятой, смените 0 на 3. Однако будьте внимательны, надписи могут заезжать друг на друга, поэтому контролируйте количество цифр после запятой при построении графика). Чтобы можно было делать замену, нужно ещё обратить '%.0f' % x
в строку: str('%.0f' % x)
. В скобках после replace
идёт через запятую, что и на что нужно заменить. А заменить мы хотим минус (справа от нуля на клавиатуре) на, например, N-тире (про N-тире, M-тире и дефис см. тут). Можете просто скопировать отсюда: - (дефис), – (N-тире), — (M-тире). Обратите внимание на букву u
перед '–'
, она означает, что надо использовать юникод. Без неё не сработает вставка таких спецсимволов.
Четвёртая строка применяет нашу функцию к горизонтальной оси. Для воздействия на вертикальную ось замените xaxis на yaxis.
Также возможен вариант return str('%.0f' % x).replace('-', '$-$')
. То, что внутри долларов, будет обработано LaTeX’ом. Значит, можно там вставить ‘$\endash$’, ‘$\emdash$’ и т.д. Но тогда по plt.show() при наведении курсора на отрицательную координату будет показано, например, x=$\endash$4000, хотя на сохранённом графике всё будет в порядке.
Возможно, чтобы Латех заработал, в начало программы придётся добавить строки:
1 | import matplotlib as mpl |
но у меня работает и без них.
Если что-то не заработало, пожалуйста, сообщите, попробуем разобраться.