【问题标题】:Change y log scale imshow()更改 y 对数刻度 imshow()
【发布时间】:2019-07-30 21:31:22
【问题描述】:

我正在尝试根据周期绘制带有 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() 不会改变紧密的坐标,即使我使用lowerupper origin,它们也始终位于图的顶部。使用pcolormesh(),我实现了在图表底部获得紧密的纵坐标。

我梦想通过使用imshow() 来获得“好的”身材!

这个问题是相对于这个问题的:Aggregate several AxesSubplot after multiprocessing to draw a matplotlib figure

【问题讨论】:

  • 可能值得说这是stackoverflow.com/q/57269797/1358308的后续问题
  • 另外,您要处理的数据有多大?即,对于您实际想要绘制的某些数据,data.shape 是什么?
  • 形状:(2048,15357)
  • 好的,因此在此过程中将其重新采样为更合理的东西可能是一个好主意。如果在 matplotlib 看到它之前可以降到大约(500,500),那么事情会快得多
  • 优化问题是stackoverflow.com/questions/57269797/…,让我们试着让cmets保持在正确的线程中

标签: python matplotlib


【解决方案1】:

这是你想要得到的吗?

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

【讨论】:

  • 嗨!感谢您的尝试!可悲的是, invert-yaxis() 还不够:它也恢复了我不想要的 y 图例......我现在更新我的问题
  • 我认为imshow 不可能做到这一点。可能NonUniformImage 会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多