Python梯度抖动和轮廓不复制MATLAB版本

2024-04-26 09:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是将随机行走模拟从Matlab转换为Python,其中一个关键输出是行走细胞访问的组合轮廓图和梯度颤动图

我有一个45x175的矩形作为域,其中有两个矩形区域被切割出来,用来反映行走。生成的轮廓看起来像一个“T”在其侧面

我在Python代码中遇到的问题是:1)我只想在轮廓线内绘制梯度,而不是在轮廓线外绘制梯度;2)我希望箭头看起来与Matlab箭头一样接近(如果不是完全一样的话)

我使用了以下函数(从this post借用)来获得Python绘图:

field = np.array([ppx, ppy])
def plot_elines(x_grid, y_grid, potential, field):
    fig, ax = plt.subplots(figsize=(50, 50))
    im_cs = ax.contour(x_grid, y_grid, potential, 18, cmap='inferno')
    plt.clabel(im_cs, inline=1, fontsize=7)
    ax.quiver(x_grid, y_grid,
          field[1, :], field[0, :])
    ax.set_xlabel("$x$")
    ax.set_ylabel("$y$")
    ax.set_aspect("equal")
    plt.show()

在Matlab中,我的代码是:

contour(potential)
hold on
quiver(ppx, ppy)
hold off

以下是结果(抱歉,没有足够的声誉发布图片):

  1. Python and Matplotlib version
  2. Matlab version

我一直在做大量的测试和阅读文档,但我对Python还不熟悉,所以我真的不明白为什么这些结果如此不同。我对potentialppxppy使用了完全相同的数据。我会发布数据,但由于数组的大小,它会非常混乱。如果有更好的方法,请告诉我

如何使Python绘图看起来(通常,工作)与Matlab绘图一样


Tags: 代码绘图field绘制plt箭头axgrid