代码之家  ›  专栏  ›  技术社区  ›  tandem

matplotlib的重叠子图

  •  0
  • tandem  · 技术社区  · 6 年前

    我试图让5行2列的子图在matplotlib中工作。 变量X表示字典。 [*X] 正在给字典里的钥匙。

    idx = 0
    axes = []
    for key, val in X.items():
        axes.append(plt.subplot(len([*X]),1,idx+1))
        axes[idx].scatter(X[key], Y[key], color='r')
        axes[idx].set_title(key)
        axes[idx].set_xlabel(title)
        axes[idx].set_ylabel('QoS')#, color='g')
        axes[idx].spines['right'].set_visible(False)
        axes[idx].spines['top'].set_visible(False)
        axes[idx].xaxis.set_ticks_position('bottom')
        axes[idx].yaxis.set_ticks_position('left')
        axes[idx].set_ylim([0,1])
        axes.append(plt.subplot(len([*X]),2,idx+1))
        tmp = idx+1
        axes[tmp].scatter(X[key], Y1[key], color='r')
        axes[tmp].set_title(key)
        axes[tmp].set_xlabel(title)
        axes[tmp].set_ylabel('Power', color='g')
        axes[tmp].spines['right'].set_visible(False)
        axes[tmp].spines['top'].set_visible(False)
        axes[tmp].xaxis.set_ticks_position('bottom')
        axes[tmp].yaxis.set_ticks_position('left')
        #axes[idx].set_ylim([0,1])
        idx+=1
    

    直觉上,我认为应该是这样,假设 len([*X]) 是5。

     511, 521
     512, 522
     513, 523
     513, 523
     514, 525
    

    按照目前的设置,我是这样理解的。 enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   ImportanceOfBeingErnest    6 年前

    这似乎有点复杂。要查看如何定义子图,请参阅 In Matplotlib, what does the argument mean in fig.add_subplot(111)?

    但是,在这里不单独定义每个子批可能是有意义的,而是一次创建所有子批。

    fig, axes = plt.subplots(nrows=5, ncols=2)
    for (key, val), axrow in zip(X.items(), axes):
        axrow[0].scatter(X[key], Y[key])
        axrow[1].scatter(X[key], Y1[key])