<p>你试过变换轴吗?例如:</p>
<pre><code>ax = subplot(111)
ax.yaxis.set_ticks([0, 2, 4, 8])
imshow(data)
</code></pre>
<p>这意味着对于不存在的坐标,数据中必须存在间隙,除非有一种方法可以提供转换函数,而不仅仅是列表(从未尝试过)。</p>
<p><strong>编辑</strong>:</p>
<p>我承认这只是一个线索,不是一个完整的解决方案。这是我想说的更多细节。</p>
<p>假设您的数据在数组中,<code>a</code>。可以使用这样的变换:</p>
<pre><code>class arr(object):
@staticmethod
def mylog2(x):
lx = 0
while x > 1:
x >>= 1
lx += 1
return lx
def __init__(self, array):
self.array = array
def __getitem__(self, index):
return self.array[arr.mylog2(index+1)]
def __len__(self):
return 1 << len(self.array)
</code></pre>
<p>基本上,它将使用<code>mylog2</code>函数转换数组或列表的第一个坐标(您可以随心所欲地转换它-它是作为log2的简化而自制的)。优点是,如果需要,可以将其重新用于另一个转换,而且还可以轻松地控制它。</p>
<p>然后将数组映射到此数组,此数组不会生成副本,而是在实例中生成本地引用:</p>
<pre><code>b = arr(a)
</code></pre>
<p>现在可以显示它,例如:</p>
<pre><code>ax = subplot(111)
ax.yaxis.set_ticks([16, 8, 4, 2, 1, 0])
axis([-0.5, 4.5, 31.5, 0.5])
imshow(b, interpolation="nearest")
</code></pre>
<p>下面是一个示例(包含随机值的数组):</p>
<p><a href="http://img691.imageshack.us/img691/8883/clipboard01f.png">alt text http://img691.imageshack.us/img691/8883/clipboard01f.png</a></p>