首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用imshow时的xticks和yticks问题

使用imshow时的xticks和yticks问题
EN

Stack Overflow用户
提问于 2022-05-25 11:08:33
回答 1查看 125关注 0票数 1

我在修复xticksyticks用于imshow绘图方面有问题。当我为imshow使用单一的绘图时,范围会更好地工作(参见下面的第一个图)。但是,当我使用在imshow图上插入局部极大值的坐标时,滴答就变了(第二个图)。有人能帮我在绘制本地最大值之后修复xticksyticks吗?

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from skimage.feature import peak_local_max

# Input of a 2D array/ 
data = np.real(data) # data link : https://www.file.io/LvDn/download/WqdRCoW2dUPV

# Find the coordinates of local maxima in the data
coordinates = peak_local_max(data, min_distance=8,  num_peaks=2) #, threshold_abs = 0.0004) #
# Display results

kf=2*2*np.pi/10
resolution = 40
N=9
kx = np.linspace(-kf, kf, N * resolution)  # space vector
ky = np.linspace(-kf, kf, N * resolution)  # space vector


fig, axes = plt.subplots(1, 2, figsize=(13, 8), sharex=True, sharey=True)
ax = axes.ravel()
ax[0].imshow(data, cmap='seismic', vmin=data.min(), vmax=data.max(),
                       extent=[kx.min(), kx.max(), ky.min(), ky.max()],
                       interpolation='nearest', origin='lower')
ax[0].axis('on')
ax[0].set_title('Original')

上面的代码片段生成了这个情节:

在这里,隐藏的范围很好,这是我想要的。当我使用脚本来绘制局部极大值时,就会更改刻度,如下所示。

代码语言:javascript
复制
ax[1].imshow(data, cmap='seismic')
ax[1].autoscale(False)
ax[1].plot( coordinates[:, 1], coordinates[:, 0], 'k.', marker='o', markersize=12)
ax[1].axis('on')
ax[1].set_title('Peak_local_max')
fig.tight_layout()
plt.show()

[

如何修复“峰值局部最大值”地块中的xticksyticks

如果我在第二个情节的脚本中使用范围,那么这个数字如下所示:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 11:35:20

很难确定您所要求的是什么,并且您提供的示例代码也不起作用。例如,像spec这样的变量是未定义的。

但是我猜主要的问题是你混合了像素(来自peak_local_max)和数据坐标。您可以用以下方法修复:

代码语言:javascript
复制
extent = [kx.min(), kx.max(), ky.min(), ky.max()]

fig, ax = plt.subplots(1, 2, figsize=(13, 8), sharex=True, sharey=True)

ax[0].set_title('Original')
ax[0].imshow(data, cmap='seismic', extent=extent)

ax[1].set_title('Peak_local_max')
ax[1].imshow(data, cmap='seismic', extent=extent)
ax[1].plot(kx[coordinates[:, 1]], ky[coordinates[:, 0]], 'go', markersize=12)

Matplotlib使用的范围也应该是外部范围,我不确定您的坐标数组kxky实际上是这样的。这会导致分辨率的一半左右的错配/偏移。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72376515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档