我想添加标签到我的绘图,其中包括子批次。这是我想要的(我用GIMP添加了外部标签)
python - Matplotlib标记子子图-LMLPHP
这就是我得到的:
python - Matplotlib标记子子图-LMLPHP
下面是生成最后一个绘图的代码:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

plots = 16
subplots = 9

fig = plt.figure(figsize=(8, 8))

wh_plots = int(np.sqrt(plots))
wh_subplots = int(np.sqrt(subplots))

outer_grid = gridspec.GridSpec(wh_plots, wh_plots, wspace=0.1, hspace=0.1)
for p in range(plots):
    inner_grid = gridspec.GridSpecFromSubplotSpec(wh_subplots, wh_subplots, subplot_spec=outer_grid[p], wspace=0.05, hspace=0.05)
    for s in range(subplots):
        ax = plt.Subplot(fig, inner_grid[s])
        ax.imshow(np.random.rand(10,10), cmap="magma", interpolation="none")
        ax.set_xticks([])
        ax.set_yticks([])
        fig.add_subplot(ax)

        if (p+1) > 12 and s == 7:
            ax.set_xlabel("sub_xlabel")
        if (p) % 4 == 0 and s == 3:
            ax.set_ylabel("sub_ylabel")

all_axes = fig.get_axes()
plt.show()

我的问题:
我怎样才能得到第一个情节中的“xlabel”和“ylabel”?
是否有更好的方法来标记子批次(sub-xlabel/sub-ylabel)
和我做的相比?
if (p+1) > 12 and s == 7:
    ax.set_xlabel("sub_xlabel")
if (p) % 4 == 0 and s == 3:
    ax.set_ylabel("sub_ylabel")

它起作用了,但看起来不对。

最佳答案

您可以在plt.show()之前添加这些行:

fig.text(0.5, 0.04, 'xlabel', ha='center', fontsize=18)
fig.text(0.04, 0.5, 'ylabel', va='center', rotation='vertical', fontsize=18)

关于python - Matplotlib标记子子图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51627885/

10-11 16:18