您是否尝试过转换轴?例如:
ax = subplot(111)
ax.yaxis.set_ticks([0, 2, 4, 8])
imshow(data)
这意味着不存在坐标的数据中必须存在间隙,除非有办法提供变换函数而不仅仅是列表(从未尝试过)。
编辑:
我承认这只是一个线索,而不是一个完整的解决方案。这是我更详细的意思。
假设您将数据放在一个数组中,a
. 您可以使用这样的转换:
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)
基本上,它将使用mylog2
函数转换数组或列表的第一个坐标(您可以根据需要进行转换 - 它是自制的 log2 的简化版)。优点是,您可以在需要时将其重新用于另一个转换,并且您也可以轻松控制它。
然后将您的数组映射到这个数组,它不会复制,而是实例中的本地引用:
b = arr(a)
现在您可以显示它,例如:
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")
这是一个示例(带有包含随机值的数组):
替代文字 http://img691.imageshack.us/img691/8883/clipboard01f.png