使用MatPultLIB PyPrPoT需要绘制基本的2D向量空间图,并且需要X轴和Y轴单元在长度上可视为相等(1到1),以便每个网格单元看起来是方形的(不是压扁的,不是细长的)。要清楚,我不需要或想要一个正方形图,但是我需要这些单元在任何时候都看正方形,而不管图形纵横比或任一轴的长度。
我试过使用轴(“相等”),这不管用。请注意,我在Jupyter笔记本中工作,它似乎要限制刻度的高度。(这可能对pyplot有一些干扰限制我不知道)。我已经花了几个小时的时间在这个问题上,没有发现任何有效的方法。

def plot_vector2d(vector2d, origin=[0, 0], **options):
    return plt.arrow(origin[0], origin[1], vector2d[0], vector2d[1],
          head_width=0.2, head_length=0.3, length_includes_head=True,
          width=0.02,
          **options)

plot_vector2d([1,0], color='g')
plot_vector2d([0,1], color='g')

plot_vector2d([2,10], color='r')
plot_vector2d([3,1], color='r')

plt.axis([-3, 6, -2, 11], 'equal')
plt.xticks(np.arange(-3, 7, 1))
plt.yticks(np.arange(-2, 11, 1))
plt.grid()
plt.show()

看水平轴相对于水平线是如何压扁的。轴(“相等”)似乎没有效果。
python - 我如何在matplotlib中实现正方形网格-LMLPHP

最佳答案

您需要将轴的纵横比设置为“相等”。您可以使用set_aspect执行此操作。文件规定:
x和y从数据到绘图单位的“相等”缩放
然后你的代码变成:

def plot_vector2d(vector2d, origin=[0, 0], **options):
    return plt.arrow(origin[0], origin[1], vector2d[0], vector2d[1],
          head_width=0.2, head_length=0.3, length_includes_head=True,
          width=0.02,
          **options)

plot_vector2d([1,0], color='g')
plot_vector2d([0,1], color='g')

plot_vector2d([2,10], color='r')
plot_vector2d([3,1], color='r')

plt.axis([-3, 6, -2, 11], 'equal')
plt.grid()
plt.gca().set_aspect("equal")

plt.show()

它给出:
python - 我如何在matplotlib中实现正方形网格-LMLPHP

关于python - 我如何在matplotlib中实现正方形网格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50158333/

10-16 07:00