我知道在matplotlib中获得大小不同的子图的几种方法。但是,我想或多或少(最好是更多)坚持使用此代码部分(source):
import matplotlib.pyplot as plt
import numpy as np
x1 = np.linspace(-1, 1, 50)
_, ax = plt.subplots(nrows=2, ncols=2, figsize=(24,8))
ax[0][0].set_title('title of first')
ax[0][0].plot(x1) # plot for first subplot
ax[0][1].set_title('title of second')
ax[0][1].plot(x1) # plot for second subplot
ax[1][0].set_title('title of first')
ax[1][0].plot(x1) # plot for first subplot
ax[1][1].set_title('title of second')
ax[1][1].plot(x1) # plot for second subplot
这会产生4个漂亮的子图:
现在,我想使左列中的两个较小,最好是正方形图,而右列中的两个较大,而无需对上面的代码进行太多修改。
我可以制作这个:
使用以下代码:
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2,width_ratios=[1, 2])
ax1 = plt.subplot(gs[0])
ax2 = plt.subplot(gs[1])
ax3 = plt.subplot(gs[2])
ax4 = plt.subplot(gs[3])
我正在寻找其他解决方案,欢迎提出建议。