如何在matplotlib中使轴之间的纵横比相同

时间:2019-03-25 20:05:27

标签: python matplotlib

我绘制箭头:

df <- as.data.frame(cbind(c("A","A","A","A","A","A","B","B","B","B","B","B"),c("A","B","C","A","B","C","A","B","C","A","B","C"),c(64,94,65,21,54,25,44,58,21,25,78,45)))
Filter <- function(V1, V2) {
    df <- df[df$V1 == V1 & df$V2 == V2,]
}

但是它给我的轴具有不同的宽高比: enter image description here

我在第一行之后添加了plt.quiver([0, 0, 0], [0, 0, 0], [1, -2, 4], [1, 2, -7], angles='xy', scale_units='xy', scale=1) plt.xlim(-10, 10) plt.ylim(-10, 10) plt.show() ,我得到了: enter image description here

但是它违反了plt.axis('equal')xlim的条件。

如何使用正确的限制进行适当的缩放?

1 个答案:

答案 0 :(得分:0)

如果要查找方形图,请设置图的figsize

plt.figure(figsize=(5,5))
plt.quiver([0, 0, 0], [0, 0, 0], [1, -2, 4], [1, 2, -7], angles='xy', scale_units='xy', scale=1)
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.show()

enter image description here

编辑

如@importanceofbeingernest所建议,不能保证将figsize设置为正方形会产生正方形图。正确的方法是设置纵横比。

plt.quiver([0, 0, 0], [0, 0, 0], [1, -2, 4], [1, 2, -7], angles='xy', scale_units='xy', scale=1)
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

文档:https://matplotlib.org/api/axes_api.html#aspect-ratio