1 回答
TA贡献1817条经验 获得超6个赞
您可以使用任何您想要的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
.
要初始化 aFuncFormatter
我们向它传递一个格式化函数,我们必须使用以下必需的特征来定义它
有两个输入,
x
并且pos
是x
要格式化的横坐标(或纵坐标),而pos
可以安全地忽略,返回要用作标签的字符串。
在示例中,函数已使用lambda
语法在现场定义,其要点是格式化字符串 ( "$\\frac{%d}{20}$"%(200+x**2)
),将横坐标函数格式化为LaTeX
分数,如上图所示。
重新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函数体中的参数。
添加回答
举报