Matplotlib Gridspec “Cell” 标签

4
使用 GridSpec,我有一个正则的绘图格子。假设是3 x 3的。所有的绘图轴都被关闭了,因为我只关心绘图形状,而不是每个轴的值。
我想要做的是给大框架的x和y轴加上标签。例如,在上述3 x 3的情况下,x轴可以是['A', 'B', 'C'],y轴可以是[1,2,3]。
是否可能获得这种标签?如何访问网格规范轴?
除非我漏掉了一个明显的方法名,否则GridSpec文档中没有太多信息。
代码示例。数据在pandas dataframe中 - 忽略嵌套循环的暴力提取......
    fig = plt.figure(figsize=(12,12))

    gs = gridspec.GridSpec(40, 19, wspace=0.0, hspace=0.0)

    for j in nseasons:
        t = tt[j]
        nlats = t.columns.levels[0]
        for idx, k in enumerate(nlats):
            diurnal = t[k].iloc[0]
            ax = plt.subplot(gs[j, idx])
            ax.plot(y, diurnal.values, 'b-')
            ax.set_xticks([])
            ax.set_yticks([])
            fig.add_subplot(ax)
            sys.stdout.write("Processed plot {}/{}\r".format(cplots, nplots))
            sys.stdout.flush()
            cplots += 1

    #Here the figures axis labels need to be set.

您可以很有可能直接向图形对象本身添加文本,而无需考虑是否附加了GridSpec。 - Paul H
也许可以使用xlabel('A'),ylabel('1')等函数? - otterb
1个回答

8

如评论中所述,您可以通过仅在图像的左侧和底部标记坐标轴来使用xlabel和ylabel完成此操作。以下是示例。

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

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

rows = 40
cols = 19
gs = gridspec.GridSpec(rows, cols, wspace=0.0, hspace=0.0)

for i in range(rows):
    for j in range(cols):
        ax = plt.subplot(gs[i, j])
        ax.set_xticks([])
        ax.set_yticks([])

    # label y 
    if ax.is_first_col():
        ax.set_ylabel(i, fontsize = 9)

    # label x 
    if ax.is_last_row():
        ax.set_xlabel(j, fontsize = 9)

plt.show()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接