2

私の計画はGridSpec(4,1)、サブプロットの 4x4 グリッドを作成するために 4 つのグリッドスペックを持つことです。4 つのサブプロットの各行の x 軸に水平線を追加したいと思います。matplotlib.lines.Line2D を見ましたが、実際にはわかりませんでした。助言がありますか?16 個の個別のグラフのように見えないように、図を視覚的に単純化しようとしています。

下の図では、最初の 2 つのグリッドスペックしかアップしていませんが、達成したいことについてより良いアイデアを提供してくれることを願っています。

ありがとう!乾杯

コード (グラフ部分):

#---the graph---
fig = plt.figure(facecolor='white')

gs1 = GridSpec(4,1)
gs1.update(left = 0.15, right = .3375 , wspace=0.02)

ax1 = plt.subplot(gs1[3,0])
ax2 = plt.subplot(gs1[2,0])
ax3 = plt.subplot(gs1[1,0])
ax4 = plt.subplot(gs1[0,0])



gs2 = GridSpec(4,1)
gs2.update(left = 0.3875, right = .575, wspace=.25)

ax1 = plt.subplot(gs2[3,0])
ax2 = plt.subplot(gs2[2,0])
ax3 = plt.subplot(gs2[1,0])
ax4 = plt.subplot(gs2[0,0])


show()

ここに画像の説明を入力

4

1 に答える 1

2

基本的には、線を描画し、軸の現在のビューを超えて線を拡張できるようにすることです。次の例では、見やすくするためにその線を赤でプロットします。

また、8 つのプロットをネストされたループでプロットすることもできます。これにより、コードがより適切に整理され、この「サブプロット全体の共通線」が実装しやすくなります。

X=[1,3,4,5]
Y=[3,4,1,3]
L=['A', 'B', 'C', 'D']
f=plt.figure(figsize=(10,16), dpi=100)
gs1 = gridspec.GridSpec(4,1)
gs1.update(left = 0.15, right = .3375 , wspace=0.02)
gs2 = gridspec.GridSpec(4,1)
gs2.update(left = 0.3875, right = .575, wspace=.25)
sp1 = [plt.subplot(gs1[i,0]) for i in range(4)]
sp2 = [plt.subplot(gs2[i,0]) for i in range(4)]
for sp in [sp1, sp2]:
    for ax in sp:
        ax.bar(range(len(L)), X, 0.35, color='r')
        ax.bar(np.arange(len(L))+0.35, Y, 0.35)
        ax.spines['right'].set_visible(False)
        ax.yaxis.set_ticks_position('left')
        ax.spines['top'].set_visible(False)
        ax.xaxis.set_ticks_position('bottom')
        if sp==sp1:
            ax.axis(list(ax.get_xlim())+list(ax.get_ylim())) #set the axis view limit
            ll=ax.plot((0,10), (0,0), '-r') #Let's plot it in red to show it better
            ll[0].set_clip_on(False) #Allow the line to extend beyond the axis view
plt.savefig('temp.png')            

ここに画像の説明を入力

于 2014-05-02T16:23:34.783 に答える