Вы можете использовать все, что захотите, в качестве меток для тиков, используя объект plt.FuncFormatter
.
Вот пример (действительно очень глупый), пожалуйста, обратитесь к превосходным документам Matplotlib для подробностей.
import matplotlib.pyplot as plt
from numpy import arange
img = arange(21*21).reshape(21,21)
ax = plt.axes()
plt.imshow(img, origin='lower')
ax.xaxis.set_major_formatter(
plt.FuncFormatter(lambda x, pos: "$\\frac{%d}{20}$"%(200+x**2)))
Каждая ось имеет major_formatter
, который отвечает за создание меток тиков.
Форматер должен быть экземпляром класса подкласса от Formatter
, выше мы использовали FuncFormatter
.
Для инициализации FuncFormatter
мы передаем ему функцию форматирования, которую мы должны определить с помощью следующего required характеристики
- имеют два входа,
x
и pos
, x
- это абсцисса (или ордината), которую нужно отформатировать, тогда как pos
можно безопасно игнорировать, - возвращает строку, которая будет использоваться в качестве метки.
В этом примере функция была определена на месте с использованием синтаксиса lambda
, суть которого - строка формата ("$\\frac{%d}{20}$"%(200+x**2)
) который форматирует как LaTeX
дробь как функцию абсциссы, как вы можете n см. на рисунке выше.
Re pos
параметр, насколько я знаю, он используется только в некоторых методах, например
In [69]: ff = plt.FuncFormatter(lambda x, pos: "%r ፨ %05.2f"%(pos,x))
In [70]: ff.format_ticks((0,4,8,12))
Out[70]: ['0 ፨ 00.00', '1 ፨ 04.00', '2 ፨ 08.00', '3 ፨ 12.00']
, но в целом вы можете игнорировать pos
аргумент в теле функции.