【发布时间】:2018-08-03 03:55:43
【问题描述】:
当我在 matplotlib 中绘制一个函数时,该图被一个矩形框住。我希望这个矩形的长度和高度的比率由黄金平均值给出,即 dx/dy=1.618033...
如果 x 和 y 比例是线性的,我使用 google 找到了这个解决方案
import numpy as np
import matplotlib.pyplot as pl
golden_mean = (np.sqrt(5)-1.0)/2.0
dy=pl.gca().get_ylim()[1]-pl.gca().get_ylim()[0]
dx=pl.gca().get_xlim()[1]-pl.gca().get_xlim()[0]
pl.gca().set_aspect((dx/dy)*golden_mean,adjustable='box')
如果是对数图,我想出了这个解决方案
dy=np.abs(np.log10(pl.gca().get_ylim()[1])-np.log10(pl.gca().get_ylim()[0]))
dx=np.abs(np.log10(pl.gca().get_xlim()[1])-np.log10(pl.gca().get_xlim()[0]))
pl.gca().set_aspect((dx/dy)*golden_mean,adjustable='box')
但是,对于半对数图,当我调用 set_aspect 时,我得到了
UserWarning: aspect is not supported for Axes with xscale=log, yscale=linear
谁能想到解决办法?
【问题讨论】:
-
您可以使用
gcf().set_size_inches(16.18,10)来控制形状。如果您设置子图,它不会完全符合您的要求。我也不认为它会在单个轴上完全执行该比率。标题、轴标签等可能会扭曲轴(不确定)。 -
如你所说,这不是我想要的:/
标签: python matplotlib aspect-ratio logarithm