gpt4 book ai didi

python - 有没有办法将 matplotlib 图旋转 45 度?

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:59 25 4
gpt4 key购买 nike

我正在寻找一种方法将在 matplotlib-pyplot(Python 库)中生成的绘图旋转 45 度(例如,这样您就可以得到菱形而不是方形),谁知道这是否可行完成了吗?

我能想到的一种方法是对所有数据使用旋转过滤器,使其看起来旋转,但绘图本身仍将处于原始方向。

我希望能够使用 matplotlib 交互功能,因此无法保存为图像然后旋转。

此外,我想使用 pyplot 函数来绘制绘图,因此使用不同的库进行绘图并不是一个理想的解决方案。

最佳答案

好的,目前我找到的唯一部分解决方案是对绘图应用旋转。这允许使用 matplotlib/pyplot 提供的交互界面。

对于像 plot() 和 scatter() 这样的点图,这是微不足道的,但我对旋转 imshow() 特别感兴趣。 This链接讨论了可能用于此任务的 transform 关键字,但它显然不起作用。

幸运的是,我找到了使用 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))

关于python - 有没有办法将 matplotlib 图旋转 45 度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com