matplotlib 更改子图的相对大小

js5cn81o  于 2023-03-19  发布在  其他
关注(0)|答案(3)|浏览(126)

我有两个情节

import matplotlib.pyplot as plt
plt.subplot(121)
plt.subplot(122)

我希望plt.subplot(122)的宽度是plt.subplot(121)的一半。有没有直接的方法来设置子图的高度和宽度参数?

zfycwa2u

zfycwa2u1#

请参见栅格等级库教程:
http://matplotlib.sourceforge.net/users/gridspec.html
示例代码:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

f = plt.figure()

gs = gridspec.GridSpec(1, 2,width_ratios=[2,1])
              
ax1 = plt.subplot(gs[0])
ax2 = plt.subplot(gs[1])

plt.show()

还可以使用GridSpec中的类似选项调整高度比

ct2axkht

ct2axkht2#

是的,如果你想把代码压缩到一行,你可以把所有要传递给matplotlib.gridspec.GridSpec()的kwargs放到plt.subplots()gridspec_kw参数中:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

fig, axs = plt.subplots(nrows=2, ncols=2, gridspec_kw={'width_ratios':[2,1], 'height_ratios':[2,1]})

df = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'])
df.plot.bar(ax=axs[0][0])
df.boxplot(ax=axs[0][1])
df.plot.line(ax=axs[1][0])
df.plot.kde(ax=axs[1][1])

j13ufse2

j13ufse23#

只需使用“122“指定几何图形,就可以隐式地获得自动的、大小相等的列和行布局。
要自定义布局网格,您需要更具体一点。请参阅Matplotlib文档中的“Customizing Location of Subplot Using GridSpec“。

相关问题