好吧,目前我发现的唯一部分解决方案是对绘图应用旋转。这允许使用 matplotlib/pyplot 提供的交互式界面。
对于像plot()和scatter()这样的点图,这是微不足道的,但我对旋转imshow()特别感兴趣。This链接讨论了转换可能用于此任务的关键字,但它显然不起作用。
幸运的是,我找到了使用 pcolormesh() 的解决方法。 pcolormesh() 绘制四边形网格并允许您指定角坐标。因此,答案是将相关变换应用于角坐标。但请注意, pcolormesh() 的工作方式与 imshow 略有不同 - 它绘制翻转的矩阵。
我还没有在网络上的任何地方看到这个解决方案,所以这里有一些 pcolormesh()/imshow() 旋转 45 度的代码:
import matplotlib.pyplot as plt
import numpy as np
def pcolormesh_45deg(C):
n = C.shape[0]
# create rotation/scaling matrix
t = np.array([[1,0.5],[-1,0.5]])
# create coordinate matrix and transform it
A = np.dot(np.array([(i[1],i[0]) for i in itertools.product(range(n,-1,-1),range(0,n+1,1))]),t)
# plot
plt.pcolormesh(A[:,1].reshape(n+1,n+1),A[:,0].reshape(n+1,n+1),np.flipud(C))