更改 matplotlib 子图的大小

Posted

技术标签:

【中文标题】更改 matplotlib 子图的大小【英文标题】:Changing size of matplotlib subplots 【发布时间】:2017-11-14 14:27:26 【问题描述】:

有没有一种简单的方法可以修改此代码,以便在不改变坐标轴比例的情况下使图更大?

import numpy as np
import matplotlib.pyplot as plt
import math
%matplotlib inline

a, c = -10, 10                                
x = np.linspace(a,c,100)                         
x = np.array(x)
def y(x): return np.arctan(x)                       

h = 0.0000001                                   

def grad(x,h): return (y(x+h)-y(x))/h          
m = grad(x,h)

plt.figure(1)
plt.subplot(121)
plt.plot(x, y(x), 'b')
plt.xlim([a,c])
plt.ylim([min(y(x)),max(y(x))])
plt.gca().set_aspect('equal', adjustable='box') 

plt.subplot(122)
plt.plot(x,m,'b')
plt.xlim([a,c])
plt.ylim([min(m),max(m)])
plt.gca().set_aspect('equal', adjustable='box')

plt.subplots_adjust(wspace = 0.5)
plt.show()

如果我去掉plt.gca().set_aspect('equal', adjustable='box'),那么图的大小就不错了,但它们不会按比例缩放。

【问题讨论】:

【参考方案1】:

子图被缩小,使得它们的纵横比相等。这似乎是可取的;因此,“更大”指的是什么并不十分清楚。

您仍然可以将图形放大,例如

plt.figure(1, figsize=(12,2))

然后使用plt.subplots_adjust.调整边距和间距

您也可以让坐标轴缩放,并且只设置数据的相等方面,

plt.gca().set_aspect('equal', adjustable='datalim')

最后将子图绘制在彼此下方会使它们变大。所以你可以使用plt.subplot(211)plt.subplot(212).

【讨论】:

以上是关于更改 matplotlib 子图的大小的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 不同大小的子图

在 matplotlib 中调整单个子图的大小

如何更改 matplotlib 中轴对象刻度的字体大小 [重复]

如何使子图的大小相等?

在带有子图的 geopandas 图中添加图例会改变图的大小

Python seaborn可视化:组合多个seaborn可视化结果并使得组合结果图像共享Y轴使用matplotlib的subplots子图函数的gridspec_kw参数指定子图的相对大小或者比率