4

2x2 グリッドに 4 つのグラフがありますが、右側の 2 つだけにバーを表示したい (スケールは行ごとに適用されます)。私はフォームを使用しています

divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
plt.colorbar(im, cax=cax) 

これらの 2 つのグラフのサイズに一致するカラーバーを取得します。ただし、これにより、カラーバーのある 2 つのサイズとカラーバーのない 2 つのサイズが異なり、どちらも見栄えが悪く、軸を外側のエッジにのみ配置する機能がなくなります。私はカラーバーの呼び出しを(ディバイダーの呼び出しで)持たないようにしましたが、もちろん、これは空の白いボックスと数字を横に残します。カラーバーの有無にかかわらず、すべてのグラフにバーを配置せずに一貫したサイズにする方法を教えてください。

4

1 に答える 1

1

を使用GridSpecしてサブプロットのカスタム セットを作成し、カラー バーを最後の列に追加します。

例:

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

fig = plt.figure()

gs = gridspec.GridSpec(2, 3, width_ratios=[10,10,1])

ax = np.empty([2,3],dtype=np.object)
im = np.empty([2,2],dtype=np.object)

for m in range(2):
    for n in range(2):
        ax[m,n] = plt.subplot(gs[m,n])
        im[m,n] = ax[m,n].imshow(np.random.rand(10,10))

for i in range(2):
    ax[i,2] = plt.subplot(gs[i,2])
    plt.colorbar(im[i,1],cax=ax[i,2])

plt.show()

参照: Python/Matplotlib - サブプロットの相対サイズを変更する

于 2013-09-25T21:20:57.590 に答える