当前版本的matplotlib不再允许box-forced
,我应该如何做与answer相同的操作?在
我使用的是matplotlib 3.1.0。在我用twinx()
函数在同一绘图上绘制了另一组数据之后,我想将实际绘图区域的纵横比更改为1。在
通常我这样做,它适用于非双轴
ratio = 1
xleft, xright = ax.get_xlim()
ybottom, ytop = ax.get_ylim()
ax.set_aspect(abs((xright - xleft) / (ybottom - ytop)) * ratio)
对于twinx轴,上述代码不起作用,但也不会产生任何错误。
然后我发现了一个answer here
代码基本上使用相同的方法将纵横比设置为1,只是使用了box-forced
选项。在
我的python中的代码不工作,引发
ValueError: 'box-forced' is not a valid value for adjustable; supported values are 'box', 'datalim'
如果我把它改成'box'
,它会给出
RuntimeError: Adjustable 'box' is not allowed in a twinned Axes. Use 'datalim' instead.
我不确定从什么时候开始删除box-forced
。
现在我们应该如何以“框”的方式设置纵横比?在
谢谢!在
多亏了@ImportanceOfBeingErnest,但为了在几个子批次中实现这一点,我发现了另一种方法,您的答案激发了我的灵感:
缺点是要决定使用哪种尺寸。 我不完全理解我的代码。。。在
正如我just commented在各自的matplotlib问题上
在我看来,在这里使用aspect仅仅是一个解决方法,可以为axes box获得一个固定的比率。Matplotlib目前还没有提供任何清晰的代码路径,但是可以通过调整子绘图参数将轴框强制到正方形空间中
另请参见this answer查看多个子批次。在
如果你想用
mpl_toolkits
把你的手弄脏,this answer是个不错的读物。在相关问题 更多 >
编程相关推荐