python - matplotlib:如何在不改变方面的情况下消除绘图中的浪费空间
问题描述
我想在 matplotlib 中显示一个等宽的图。然后我想截断绘图的 y 部分,以便更仔细地查看数据。但是,我希望自动更改 x 轴限制以适应数据的剩余可见部分。
到目前为止,这是我的代码(出于说明目的使用假数据):
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
ax.plot([-2,-1,0,1,2], [4,1,0,1,4])
ax.set_aspect('equal', adjustable='box')
ax.set_ylim(0,1)
fig.show()
和结果图像:
我的问题是,如何在保留纵横比的同时从绘图的左侧和右侧删除空白,这样绘图会更大并且更适合数据? 不幸的是,我可能不知道我想要的确切 x 限制或在给定 y 限制的情况下推导出它们的公式。
解决方案
您要求的是某种基于可见数据的自动缩放。这在 matplotlib 中没有实现。不过,您可以手动进行,即基于所需的 y 限制,检查哪些点是可见的,然后相应地设置 x 限制。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
line, = ax.plot([-2,-1,0,1,2], [4,1,0,1,4])
ax.set_aspect('equal', adjustable='box')
ymin = 0
ymax = 1
ax.set_ylim(ymin, ymax)
x,y = line.get_data()
cond = (y >= ymin) & (y <= ymax)
ax.set_xlim(x[cond].min(), x[cond].max())
plt.show()
推荐阅读
- tsql - 如何在 T-SQL 中选择不同的组合
- java - org.springframework.beans.factory.UnsatisfiedDependencyException:创建类路径资源中定义的名称为“commandGateway”的bean时出错
- python - 如何使用熊猫在多列excel中使用相同的条件(替换)?
- c# - CLError 和 CLErrorDomain 中的未知类型名称“NS_ASSUME_NONNULL_BEGIN”错误
- python - 如何说服鼠标右键单击弹出菜单在wxPython中显示鼠标光标位置附近?
- git - 管道#37652在阶段准备索引中的主控失败
- json - 如何正确地 JSON 编码/解码 Flutter 中的 Duration 字段
- sql - 加入与父母和祖父母的关系
- javascript - 不确定如何在 useEffect 中集成功能
- angular - 有什么方法可以优化 Docker Image 的大小吗?