情节的长宽比

时间:2018-01-10 15:21:25

标签: python python-3.x matplotlib

我尝试在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])

它有效,但我需要另一个宽高比。如何获得比高三倍宽的情节?

3 个答案:

答案 0 :(得分:3)

有几个选择。正如评论中所建议的那样,您可以手动增加图形尺寸,确保宽度比高度大三倍。

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倍,并给出:

enter image description here

您还可以使用ax.set_aspect()更改宽高比。这将更改数字大小:

fig, ax = plt.subplots()

ax.set_aspect(1/3)

plt.show()

给出了:

enter image description here

答案 1 :(得分:1)

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

ax.set_aspect('auto')

您可以找到文档here 但是,这会改变轴纵横比。正如@MaxPowers指出的那样,你也可以改变子图的figsize

答案 2 :(得分:0)

您可以直接指定图形尺寸以根据需要生成各种尺寸。

fig, axs = plt.subplots(2, 3, figsize=(10, 3), sharex=True, sharey=True, constrained_layout=True)

希望这会有所帮助。