我正在生成基于对数轴的二维数组(例如,x像素坐标使用logspace(log10(0.95), log10(2.08), n)
生成)。
我想使用普通的imshow显示图像,以其本地分辨率和缩放比例显示(我不需要拉伸它;数据本身已经是对数比例),但我想添加在对数轴上正确位置的刻度、标签和线条。我该如何做?
理想情况下,我只需使用类似axvline(1.5)
的命令即可将线条放置在正确的位置(距离左侧58%的位置),但如果唯一的方法是手动在对数比例坐标和图像坐标之间进行转换,那也可以。
对于线性轴,使用extents=
调用imshow可以实现我想要的效果,但我没有看到在对数轴上实现相同效果的方法。
示例:
from matplotlib.colors import LogNorm
x = logspace(log10(10), log10(1000), 5)
imshow(vstack((x,x)), extent=[10, 1000, 0, 100], cmap='gray', norm=LogNorm(), interpolation='nearest')
axvline(100, color='red')
这个例子无法正常工作,因为 extent= 仅适用于线性比例尺,因此当您在100处执行 axvline时,它不会出现在中心位置。我希望 x 轴显示 10、100、1000,
axvline(100)
在 100 点处插入一条竖直线,同时像素仍然保持等间距。