如何在不更改图形尺寸的情况下将坐标轴放置在图形中? [Python,matplotlib]

时间:2020-03-20 18:04:59

标签: python matplotlib

我正在尝试创建包含多个图形的视频,因此我需要使轴在多个独立图形之间保持稳定。但是,y轴会更改比例,因此,随着刻度标签的更改,轴的框架会保持移动。我正在尝试手动告诉matplotlib整个图形的确切大小,并确切告诉它图形中轴的位置,但是它不能正常工作。

以下是基本图形:

import matplotlib.pyplot as plt

fig=plt.figure(figsize=(8,4),facecolor=(0.5,0.5,0.5))
ax=fig.add_subplot()
ax.plot([5,10],[800,900])
plt.show()

enter image description here

如果希望轴框架从left = 0.5,bottom = 0.5,width = 0.2和height = 0.2开始,这是尝试更改它的一种方法。我尝试了许多不同的方法,但都失败了,因此这说明了我正在尝试做的事情:

fig=plt.figure(figsize=(8,4),facecolor=(0.5,0.5,0.5))
ax=fig.add_axes((0.5,0.5,0.2,0.2))
ax.plot([5,10],[800,900])
plt.show()

enter image description here

现在,我希望它看起来更像这样,以便每个图形的轴框黑框都将位于完全相同的位置,并且每个图形都将具有相同的大小。这样,当我将其制作为动画时,黑框将不会四处晃动。 (显然,我不会在实际视频中将缓冲区设置得那么大。)

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要使用ax.set_position

如果您的斧头盒最初占据了整个身材,则可以相对于旧斧头创建新的斧头尺寸,例如:

import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(8, 4), facecolor=(0.5, 0.5, 0.5))
ax = fig.add_subplot(111)
bbox = ax.get_position()
new_bbox = (bbox.x0+0.40, bbox.y0+0.40, bbox.width*0.5, bbox.height*0.5)
ax.set_position(new_bbox)
ax.plot([5, 10], [800, 900])
plt.show()

enter image description here