更改 y 对数刻度 imshow()

2024-03-16

我正在尝试根据周期绘制 y 尺度的频谱图,所以我想要一个反转的对数尺度。

事情是:我找到了如何使用pcolormesh(),不是通过使用imshow(). imshow()似乎比pcolormesh(),这对我来说,是一个非常喜欢它的理由!

我错过了什么 ?

我不知道如何说得更清楚,所以这是一个可重现的例子:

import matplotlib.pyplot as plt
import numpy as np

size = 10
data = np.arange(size * size).reshape((size, size))

x_start = 1
x_end = 10
y_start = 1
y_end = 10

extent = [x_start, x_end, y_start, y_end]

fig, axes = plt.subplots(1,4)

axes[0].set_yscale('log')
im = axes[0].imshow(data, extent=extent, origin='upper', interpolation='None', cmap='viridis')


axes[1].set_yscale('log')
im2 = axes[1].imshow(data, extent=extent, origin='lower', interpolation='None', cmap='viridis')

axes[2].set_yscale('log')
im2 = axes[2].imshow(data, extent=extent, origin='lower', interpolation='None', cmap='viridis')
axes[2].invert_yaxis()

y = np.arange(1,11)*0.1
x = np.arange(0,10)
axes[3].set_yscale('log')
im3 = axes[3].pcolormesh(x, 1/y , data)

axes[0].set_title("not ok")
axes[1].set_title("not ok")
axes[2].set_title("not ok")
axes[3].set_title("OK")

plt.tight_layout()

plt.show()

您可以在上一张图片中看到,使用时紧密坐标不会改变imshow(),即使我使用,它们也始终位于图的顶部lower or upper origin. With pcolormesh(),我实现了在图表底部获得紧密的坐标。

我梦想通过使用获得“好的”数字imshow() !

这个问题与这个问题相关:多处理后聚合多个 AxesSubplot 以绘制 matplotlib 图形 https://stackoverflow.com/questions/57269797/aggregate-several-axessubplot-after-multiprocessing-to-draw-a-matplotlib-figure


这就是你想要得到的吗?

axes[1].set_yscale('log')
im2 = axes[1].imshow(data, extent=extent, origin='lower', interpolation='None', cmap='viridis')
axes[1].invert_yaxis()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 y 对数刻度 imshow() 的相关文章

随机推荐