3x2 サブプロットを含む図があり、サブプロットの中央のペアに背景色を設定して、どの軸ラベルがどのサブプロットに属しているかを明確にしたいと考えています。
サブプロットを作成するときの設定facecolor
は、軸によって定義された領域の色のみを変更します。目盛りと軸のラベルは引き続き に描画されfigure.patch
ます。これを行う簡単な方法がないと仮定すると、 の関連するインスタンスの背後に長方形のパッチを追加できますfigure.axes
。
少し実験した後、figure.axes[x].get_position()
Axes 座標 (正規化された座標 [0.0-1.0]) を返すように見えますが、 Rectangle()
Display 座標 (ピクセル) が必要なようです。このコードは多かれ少なかれ機能します (ED: インタラクティブに、ただし (Agg レンダラーを使用して) PNG に出力する場合、Rectangle の配置は完全にオフになります):
import matplotlib.pyplot as plt
import matplotlib
f = plt.figure()
plt.subplot( 121 )
plt.title( 'model' )
plt.plot( range(5), range(5) )
plt.xlabel( 'x axis' )
plt.ylabel( 'left graph' )
plt.subplot( 122 )
plt.title( 'residuals' )
plt.plot( range(5), range(5) )
plt.xlabel( 'x axis' )
plt.ylabel( 'right graph' )
plt.tight_layout(pad=4)
bb = f.axes[0].get_position().transformed( f.transFigure ).get_points()
bb_pad = (bb[1] - bb[0])*[.20, .10]
bb_offs = bb_pad * [-.25, -.20]
r = matplotlib.patches.Rectangle( bb[0]-bb_pad+bb_offs, *(bb[1] - bb[0] + 2*bb_pad),
zorder=-10, facecolor='0.85', edgecolor='none' )
f.patches.extend( [r] )
しかし、非常にハックなようで、何か重要なことを見逃しているように感じます. それを行うためのより簡単な/より良い方法があるかどうか、そしてもしそうなら、それは何ですか?
私は本当にファイルに書き込む必要があるので、現在解決策がありません。