图的纵横比

新手上路,请多包涵

我尝试在 python 中更改纵横比。我知道这已经在许多其他情况下进行过讨论(例如与 figaspect),但我并没有像我想要的那样得到它。如果我使用 figaspect,我会得到错误:

'Figure' object is not callable

没有它我有这个代码:

 fig, ax = plt.subplots()

ax.plot(y_test1, linewidth=0.5, linestyle="-", label='Test1')
ax.plot(y_test2, linewidth=0.5, linestyle="-", label='Test2')
legend = ax.legend(loc='right center',prop={'size': 5}, shadow=True, fontsize='medium')
plt.xlabel('images')
plt.ylabel('error')
plt.grid()
plt.axis([0,100, 0, 20])

它有效,但我需要其他纵横比。我如何获得比高度宽三倍的地块?

原文由 csi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 718
2 个回答

有几个选项。正如评论中所建议的,您可以手动增加图形大小,确保宽度是高度的三倍。

 fig, ax = plt.subplots(figsize=(height, height*3))

如果您想使用 figaspect 您可以执行以下操作:

 from matplotlib.figure import figaspect

w, h = figaspect(1/3)
fig, ax = plt.subplots(figsize=(w,h))

plt.show()

这将创建一个比高度宽 3 倍的 _图形_,并给出:

在此处输入图像描述

您还可以使用 ax.set_aspect() 更改 纵横比。这 不会 改变图形大小:

 fig, ax = plt.subplots()

ax.set_aspect(1/3)

plt.show()

这使:

在此处输入图像描述

原文由 DavidG 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为你最好的帮助是这样的:

 ax.set_aspect('auto')

您可以在 此处 找到文档,但是,这会更改轴纵横比。正如@MaxPowers 指出的那样,您还可以更改子图的 figsize

原文由 Dorian 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题