<p>不要求沿两个轴具有相同数量的数据。
与</p>
<pre><code>x = np.array([0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4])
y = np.array([0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1,
0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1)]
</code></pre>
<p>您有<code>nx = 5</code>不同的x值和<code>ny = 5</code>不同的y值,但同样可以有不同数量的值。
唯一的要求是</p>
<ul>
<li><p>z值等于这两个数的乘积,在本例中为25</p>
<pre><code>z = np.random.rand(nx*ny)
</code></pre></li>
<li><p>z值等于每个数的乘积减1,在这种情况下是16。在</p>
<pre><code>z = np.random.rand((nx-1)*(ny-1))
</code></pre></li>
</ul>
<p>取决于要在轴网边缘还是中心定义值。在</p>
<p>在这种情况下,第一种情况似乎适用。在</p>
<p>因此,您只需将数据重塑为二维数组(在本例中,将其转置,因为x值沿着第二个数组维度移动)。在</p>
<pre><code>nx = 5
ny = 5
Z = z.reshape(ny, nx).T
</code></pre>
<p>最后,您可以使用<code>imshow</code>来绘制它。棘手的部分是设置正确的图像范围,因为图像边缘不在中心像素位置,而是半个像素宽度向右或向左移动。在</p>
<pre><code>extent = [x.min()-np.diff(x)[0]/2.,x.max()+np.diff(x)[0]/2.,
y.min()-np.diff(y)[0]/2.,y.max()+np.diff(y)[0]/2.,]
plt.imshow(Z, extent=extent, aspect="auto")
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/OVYzz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/OVYzz.png" alt="enter image description here"/></a></p>