imshow中的对数x轴刻度 :: matplotlib

6

我有一个看起来像这样的表格

enter image description here

我想将突出显示的部分作为矩阵进行imshow。我希望绘图的x轴刻度是对数的,正如顶部行中的参数值所示。在matplotlib中如何实现?


不能在图像上应用log比例尺。这没有任何意义。imshow以一种方式获取数组,其中每个值都是像素值。因此,在您的图像(即您的表格)中,67只是一个像素,64是下一个像素。它不关心您的缩放概念。 - Developer
@开发者,这可能与纯图像分析本身无关,但是作为一张图显示的三维数据可以具有对数刻度。对于此类情况,根据我的回答,使用pcolor是适当的。 - Paul H
@PaulH,令人困惑的是SO说了一个“矩阵”。您的pcolor解决方案非常好,因为您为每个单元格分配了坐标!在*Excel 2007+*中,可以轻松地对矩阵进行着色(条件格式设置),但这里的概念和用法仍然不清楚。 - Developer
可能是Matplotlib中imshow的非线性坐标轴问题的重复提问。 - tacaswell
@开发者:我知道在imshow中使用log比例尺没有意义,因为它是矩阵的逐像素表示。但是,我想通过颜色显示的数量取决于两个变量xy,我有这个数量的值,当x=10,100,1000等等时,因此我需要将密度图的x轴比例设置成对数比例。 @PaulH:感谢您的答案。 - lovespeed
1个回答

16
你应该使用pcolor而不是imshow。这里有一个例子:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
Z = np.random.random(size=(7,7))
x = 10.0 ** np.arange(-2, 5)
y = 10.0 ** np.arange(-4, 3)
ax.set_yscale('log')
ax.set_xscale('log')
ax.pcolor(x, y, Z)

这给了我:

log pcolor


5
使用pcolormesh可能更好(因为它更快)。 - tacaswell
你知道如何将正方形的中心与x、y坐标对齐而不是左下角吗? - Anna Christine
@AnnaChristine 请查看 shading 参数的文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pcolor.html - Paul H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接