<p>你的问题是地图坐标和纬度/经度之间的坐标不匹配</p>
<p>将x记号指定为沿x轴显示,间距根据</p>
<pre><code>np.linspace(30, 390, 13)
</code></pre>
<p>但是,如果您查看<code>x</code>中的值(即在<code>contourf</code>行中绘制的实际x坐标),您会看到它们从<code>0</code>到{<cd4>}。在</p>
<p>为了避免这种情况-更换</p>
^{pr2}$
<p>与</p>
<pre><code>plt.xticks(np.linspace(min(x[0]),max(x[0]), len(xlab)),xlab)
</code></pre>
<hr/>
<p><strong><em>注意</em></strong>-您可以用一个更小但完整的示例来产生这种效果,这可能有助于您隔离问题。看看如何生成<a href="https://stackoverflow.com/help/mcve">Minimal, complete and verifiable example</a>。目前,您的代码没有运行,因为它缺少<code>a</code>、<code>m</code>、<code>mydatalist</code>和所需的导入。在</p>
<p>我在下面的代码中加入了您可能提供的代码—保留子批次循环—尽管实际上您可能只使用一个绘图而不是子绘图,也会获得相同的效果。在</p>
<pre><code>import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
x=np.linspace(30,390,288)
y = np.linspace(-90, 90, 234)
xg, yg = np.meshgrid(x, y)
fig = plt.figure()
for j in xrange(0,3):
a = fig.add_subplot(3,2,j+1)
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=30,urcrnrlon=390, resolution='c', ax=a)
m.drawcoastlines() # Just put something on the map - doesn't need to be your complex contour plot
x, y = m(xg,yg)
#You can see the problem with using hard-coded 30,390 if you print this
#x=30 and x=390 are both in the lowest 0.001% of the x axis
#print x
xlab=np.concatenate([np.arange(30,181,30),np.arange(-150,31,30)])
plt.xticks(np.linspace(30,390,13),xlab)
#Working version commented below
#plt.xticks(np.linspace(min(x[0]),max(x[0]), len(xlab)),xlab)
plt.tick_params(labelsize=8)
plt.show()
</code></pre>