python - 如何在不改变图形大小的情况下将轴框定位在图形内?[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()
如果我希望轴框架从 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()
现在,我希望它看起来更像这样,以便轴框的黑框对于每个图形都处于完全相同的位置,并且每个图形的大小完全相同。这样,当我把它做成动画时,黑框就不会晃动了。(显然,我不会在真实视频中使缓冲区那么大。)
解决方案
您需要使用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()
推荐阅读
- xslt - 从来自内存中另一个参数的参数中的字符串过滤 - XSLT
- python - 更改用户名后如何重新安装 Python
- c# - 持久函数中的并行化
- html - 浮动:内容太长时右推插入符号,如何工作?
- java - 我应该将哪个版本的 OpenJFX (JavaFX) 和 Scene Builder 与 Amazon Corretto 11 (OpenJDK) 一起使用?
- python - 在 3d 条形图中将刻度和基本形状之间的空间从正方形更改为矩形
- reactjs - 如何在反应表中使用复选框?
- javascript - 如何将我的数组转换为对象或 json webscraping
- c# - ASP.NET Core MVC 从 cshtml 页面调用异步方法
- mono - 在 Linux 中加载 Mono 库时如何处理未定义的符号