当figsize的宽度和高度设置为相同值时,为什么matplotlib绘图轴未严格设置为相等

时间:2019-03-14 09:47:50

标签: python-3.x matplotlib

使用以下代码获取轴位置以及重量和高度的比例。

import matplotlib.pyplot as plt
ss = 2.4
fig, ax = plt.subplots(1, 1, figsize=(ss, ss))
box = ax.get_position()
box.width/box.height

设置ss=2.4, 3.6, 7.2,我的PC上的输出始终相同:

  

1.0064935064935066

后端:%matplotlib qt

为什么宽度和高度值不一样?

1 个答案:

答案 0 :(得分:1)

根本没有理由将轴设为正方形,仅因为它所处的图形是正方形即可。

default rc file设置的子图参数为

figure.subplot.left    : 0.125  ## the left side of the subplots of the figure
figure.subplot.right   : 0.9    ## the right side of the subplots of the figure
figure.subplot.bottom  : 0.11   ## the bottom of the subplots of the figure
figure.subplot.top     : 0.88   ## the top of the subplots of the figure

如此

(right-left)/(top-bottom) = (0.9-0.125)/(0.88-0.11) = 1.0064935

当然,您可以根据自己的喜好设置这些参数,从而在rc文件中或通过代码(例如)获得正方形子图。

rc = {"figure.subplot.left"    : 0.1, 
      "figure.subplot.right"   : 0.9,
      "figure.subplot.bottom"  : 0.1,
      "figure.subplot.top"     : 0.9 }
plt.rcParams.update(rc)

fig.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9)