相关疑难解决方法(0)

Matplotlib - 将子图添加到子图中?

我正在尝试创建一个由2x2网格组成的图形,其中每个象限中有2个垂直堆叠的子图(即2x1网格).但我似乎无法弄清楚如何实现这一目标.

我得到的最接近的是使用gridspec和一些丑陋的代码(见下文),但是因为gridspec.update(hspace=X)改变了所有子图的间距,我仍然不是我想要的.

理想情况下,我想要的是,使用下面的图片作为示例,减少每个象限内的子图之间的间距,同时增加顶部和底部象限之间的垂直间距(即1-3和2-4之间).

有没有办法做到这一点(使用或不使用gridspec)?我最初想象的是生成每个子子图网格(即每个2x1网格)并将它们插入更大的2x2子图网格中,但我还没想出如何将子图添加到子图中,如果有偶数的话一种方式.

在此输入图像描述

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure(figsize=(10, 8))
gs = gridspec.GridSpec(4,2)
gs.update(hspace=0.4)
for i in range(2):
    for j in range(4):
        ax = plt.subplot(gs[j,i])
        ax.spines['top'].set_visible(False)
        ax.spines['right'].set_visible(False)
        plt.tick_params(which='both', top='off', right='off')
        if j % 2 == 0:
            ax.set_title(str(i+j+1))
            ax.plot([1,2,3], [1,2,3])
            ax.spines['bottom'].set_visible(False)
            ax.get_xaxis().set_visible(False)   
        else:
            ax.plot([1,2,3], [3,2,1])
Run Code Online (Sandbox Code Playgroud)

python matplotlib figure subplot

23
推荐指数
3
解决办法
2万
查看次数

将函数中创建的图窗添加到另一个图窗的子图中

我创建了两个函数来绘制两个特定的图并返回各自的数字:

import matplotlib.pyplot as plt

x = range(1,100)
y = range(1,100)

def my_plot_1(x,y):
    fig = plt.plot(x,y)
    return fig

def my_plot_2(x,y):
    fig = plt.plot(x,y)
    return fig
Run Code Online (Sandbox Code Playgroud)

现在,在我的函数之外,我想创建一个带有两个子图的图形并将我的函数图形添加到其中。像这样的东西:

my_fig_1 = my_plot_1(x,y)
my_fig_2 = my_plot_2(x,y)

fig, fig_axes = plt.subplots(ncols=2, nrows=1)
fig_axes[0,0] = my_fig_1
fig_axes[0,1] = my_fig_2
Run Code Online (Sandbox Code Playgroud)

然而,仅仅将创建的图形分配给这个新图形是行不通的。该函数调用该图窗,但未在子图中分配该图窗。有没有办法将我的函数图放置在另一个图的子图中?

python graph matplotlib figure subplot

7
推荐指数
1
解决办法
5966
查看次数

标签 统计

figure ×2

matplotlib ×2

python ×2

subplot ×2

graph ×1