【问题标题】:How to equalize the scales of x-axis and y-axis in matplotlib如何在matplotlib中均衡x轴和y轴的比例
【发布时间】:2013-08-01 09:58:28
【问题描述】:

我想在正方形图上画线。

x-axisy-axis 的比例应该相同。

例如x 范围从 0 到 10,在屏幕上为 10cm。 y 也必须在 0 到 10 的范围内,并且也必须是 10 厘米。

必须保持方形,即使我弄乱了窗口大小。

目前,我的图表随窗口大小一起缩放。

我怎样才能做到这一点?

更新:

我尝试了以下方法,但没有成功。

plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')

【问题讨论】:

  • 它对我有用。您可以发布一个不起作用的完整代码示例吗?你能解释什么不起作用吗?你只想要相同的比例吗?还是同样的范围?
  • @joris 基本上我想要一个固定的 SQUARE 图。即使我最大化窗口,我也希望保留 SQUARE。我的屏幕很宽,在我最大化窗口后,图形也变成了矩形。我希望它仍然是 SQUARE
  • 再次,您能否发布一个完整的代码示例。因为给定的答案应该这样做,所以将其保留为正方形。不保留其宽度或高度,但保留其形状。
  • 在 SO 上与他人互动时,请尽量少一些磨砺。你是从人们的善意中获得帮助的,所以你的行为少一些。
  • 对于 3d,你需要做一些额外的工作:stackoverflow.com/questions/13685386/…

标签: python matplotlib


【解决方案1】:

您需要更深入地研究 api 才能做到这一点:

from matplotlib import pyplot as plt
plt.plot(range(5))
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.gca().set_aspect('equal', adjustable='box')
plt.draw()

doc for set_aspect

【讨论】:

  • 太棒了!它确实像魅力一样起作用。如果你不介意的话,你能告诉我plt.plot(range(5))plt.gca().set_aspect('equal', adjustable='box') 做什么吗?另外,我注意到即使我没有plt.draw(),情节仍然会出现。那它有什么用呢?
  • plot 只是有一些东西要展示。对于set_aspect,请阅读文档链接。 draw 只是为了确保它被渲染。
  • 有一些假数据要绘制(它应该绘制一条直线)。
  • @perfectm1ng 不用担心,我花了一段时间才弄清楚你在问什么。
  • 有没有办法在不指定具体限制的情况下完成这项工作?我本来希望有一个简单的命令来获得一个具有相同比例和两个轴刻度的正方形图。谢谢
【解决方案2】:
plt.axis('scaled')

对我来说效果很好。

【讨论】:

  • 也为我工作。只需确保在设置限制/刻度之前使用它,因为它会自动重新调整。
  • 抱歉,plt.axis('scaled') 在 Python 3.7 和 matplotlib 中对我不起作用 - matplotlib==3.1.0 但是, plt.axis('square') 起作用了!跨度>
  • @rishijain ValueError:无法识别的字符串平方轴;试穿或试穿
【解决方案3】:

plt.axis() 上查看the documentation。这个:

plt.axis('equal')

不起作用,因为它会更改轴的范围以使圆看起来是圆形的。你想要的是:

plt.axis('square')

这将创建一个具有相等轴的正方形图。

【讨论】:

    【解决方案4】:

    尝试类似:

    import pylab as p
    p.plot(x,y)
    p.axis('equal')
    p.show()
    

    【讨论】:

    • 这适用于我的系统,也许您可​​以显示您正在处理的部分代码?或许能够帮助更快地解决问题。
    • 这通常不起作用。坐标轴相等,但绘图不是方形的,除非绘图窗口也是方形的。使用 Matplotlib 2.0 测试
    • P.axis('equal') 好像是P.gca().set_aspect('equal', adjustable='datalim')。而如果adjustable='box',则情节变为正方形。
    • 我绝对不会从中得到一个方形盒子。
    • pylab 已弃用
    【解决方案5】:

    您可以使用以下方法将绘图拉伸为正方形:

    fig = plt.figure(figsize=(1, 1))
    

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2015-09-11
      • 2013-08-16
      相关资源
      最近更新 更多