我在為情節修復xticksand時遇到問題。當我使用單個圖時,范圍會更好(見下圖)。但是,當我使用在繪圖上插入區域最大值的坐標時,刻度發生了變化(第二個圖)。任何人都可以在繪制區域最大值后幫助我修復和。yticksimshowimshowimshowxticksyticks
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')
上面的代碼片段生成了這個圖:

在這里, imshow 范圍可以正常作業,這對我來說是理想的。當我使用腳本繪制區域最大值時,刻度會更改,如下所示。
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()
[
如何修復“峰值區域最大值”圖中的xticks和?yticks
如果我將范圍用于第二個繪圖的腳本,則該圖如下所示:

uj5u.com熱心網友回復:
很難確定您要的是什么,并且您提供的示例代碼不起作用。例如,像這樣的變數spec是未定義的。
但我猜主要問題是您正在混合像素(來自peak_local_max)和資料坐標。您可以使用以下方法修復:
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 使用的范圍也應該是外部范圍,我不確定您的坐標陣列kx,ky實際上就是這樣。這可能會導致解析度一半的不匹配/偏移。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/483305.html
標籤:Python matplotlib 图像处理 scikit 图像 xticks
上一篇:來自cv2.getPerspectiveTransform的矩陣沒有適當地變換點
下一篇:從邊界框獲取皮膚的二進制掩碼
