根据yticks上的matplotlib文档,您可以指定要使用的标签。 在您的情况下,如果要显示标签[10,100,500,1000,1500,2000,3000,4000,5000] ,则可以将该列表作为第二个参数传递给plt.yticks() ,就像这样
plt.yticks(z[pos], [10,100,500,1000,1500,2000,3000,4000,5000])
并会相应显示yticks 。 问题出现在位置的指定中-由于depth数组没有与所需ytick值完全对应的点,因此您需要进行插值才能找到放置标签的确切位置。 除非在pos中指定的大概位置已经足够,否则在这种情况下就足够了。
如果depth数据的间距不均匀,则可以使用numpy.interp进行插值,如下所示
import matplotlib.pyplot as plt
import numpy as np
# Create some depth data that is not uniformly spaced over [0, 5500]
depth = [(np.random.random() - 0.5)*25 + ii for ii in np.linspace(0, 5500, 50)]
lat = np.linspace(-75, 75, 50)
z = np.linspace(0,50, 50)
yticks = [10,100,500,1000,1500,2000,3000,4000,5000]
# Interpolate depths to get z-positions
pos = np.interp(yticks, depth, z)
temp = np.outer(lat, z) # Arbitrar