【问题标题】:Adjust figure size with respect to the axes size?相对于轴大小调整图形大小?
【发布时间】:2016-04-13 00:59:07
【问题描述】:

假设我用 matplotlib 创建了一个简单的绘图

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)

plot stuff etc .. . 

完成绘图例程后,我想调整图形的大小(但保持所有纵横比相同),以便将 ax 的总高度设置为恒定值,即 3 英寸。 有没有一个很好的和简短的方法来归档这个?

编辑:我知道如何更改图形大小,但在这里我想根据轴的大小进行调整。

【问题讨论】:

  • 我想改变轴的大小,这略有不同

标签: python matplotlib


【解决方案1】:

这是以英寸为单位设置图形高度的功能:

def set_axes_height(ax, h):
    fig = ax.figure
    aw, ah = np.diff(ax.transAxes.transform([(0, 0), (1, 1)]), axis=0)[0]
    fw, fh = fig.get_size_inches()
    dpi = fig.get_dpi()
    scale = h / (ah / dpi)
    fig.set_size_inches(fw*scale, fh*scale, forward=True)

【讨论】:

  • 谢谢,这就是我要找的,我不知道ax.figure 属性。只有一件事np.diff(ax.transAxes.transform([(0, 0), (1, 1)]), axis=0)[0] 到底是如何工作的?
  • ax.transAxes 将 Axes 坐标中的点转换为 Screen 坐标。在 Axes 坐标中 (0, 0) 是左下点, (1, 1) 是右上角。 np.diff(...) 计算 Axes 对象在屏幕坐标中的宽度和高度。
猜你喜欢
  • 1970-01-01
  • 2012-10-22
  • 2014-04-03
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2018-10-23
相关资源
最近更新 更多