3

こんにちは、次のコマンドがあります。

ヒートマップのグリッドでサブプロット軸を指定するには:

ax4 = plt.subplot2grid((3, 4), (1, 3), colspan=1, rowspan=1)

この軸でヒートマップを作成するには:

heatmap = ax4.pcolor(data, cmap=mycm, edgecolors = 'none', picker=True)

プロットを右に移動して、他のサブプロットに従って軸の中央に配置するには:

box = ax4.get_position()
ax4.set_position([box.x0*1.05, box.y0, box.width * 1.05, box.height])

パディングなしでカラーバーを表示するには

fig.colorbar(heatmap, orientation="vertical")

ただし、これにより次の結果が得られます。

カラーバーがヒートマップの上にあることに注意してください。

pad キーワードを使用すると、ヒートマップと重ならないようにカラーバーを移動できますが、これによりプロット領域の幅が狭くなります。

プロット領域を同じ幅に保ち、カラーバーをこの領域の外に出すにはどうすればよいですか?

ありがとう!

4

1 に答える 1

8

カラーバーを独自の軸に配置し、その軸のサイズと位置を直接設定できます。以下に、既存のコードに別の軸を追加する例を含めました。この図に多くのプロットとカラー バーが含まれている場合は、gridspecを使用してそれらをすべて追加することをお勧めします。

import matplotlib.pylab as plt
from numpy.random import rand

data = rand(100,100)
mycm = plt.cm.Reds

fig = plt.figure()
ax4 = plt.subplot2grid((3, 4), (1, 3), colspan=1, rowspan=1)

heatmap = ax4.pcolor(data, cmap=mycm, edgecolors = 'none', picker=True)

box = ax4.get_position()
ax4.set_position([box.x0*1.05, box.y0, box.width, box.height])

# create color bar
axColor = plt.axes([box.x0*1.05 + box.width * 1.05, box.y0, 0.01, box.height])
plt.colorbar(heatmap, cax = axColor, orientation="vertical")
plt.show()

ここに画像の説明を入力

于 2013-10-30T14:51:23.107 に答える