2017-03-10 8 views
3

multiplot aplpyプロットを軸を動的に共有する方法はありますか?移動またはズームしたときに移動し、ズームするようにする方法はありますか?Aplpy multiplotダイナミック軸共有

私は、matplotlib pyplotのimshowルーチンとsubplotルーチンを使用して影響を得ることができますが、これらの制限を使用して、私のプロットの他の重要な側面を、aplpyは画像に必要なすべてのツールを提供します。

私は、matplotlib cidコマンドと関数を使用して、クリック位置に基づいてすべての画像を再配置しようとしましたが、ズームインまたはズームアウトは両方ではできません。私のプロットコードの

私のMWEは以下の通りです:

from astropy.io import fits 
import matplotlib.pyplot as plt 
import aplpy 

root = '/my/data/directory/' 
data = '3d_image.fits' 

hdu = fits.open(root + data)[0] 
hdr = hdu.header 

fits1 = fits.PrimaryHDU(data = hdu.data[4,:,:], header = hdr) 
fits2 = fits.PrimaryHDU(data = hdu.data[6,:,:], header = hdr) 

fig = plt.figure(figsize=(15, 15)) 

f1 = aplpy.FITSFigure(fits1, figure=fig, subplot=[0.1,0.1,0.8,0.35]) 
f1.show_colorscale(cmap = 'coolwarm', vmin = 8., vmax = 10.5) 

f2 = aplpy.FITSFigure(fits2, figure=fig, subplot=[0.1,0.5,0.8,0.35]) 
f2.show_colorscale(cmap = 'coolwarm', vmin = 1.2, vmax = 1.6) 

fig.show 

答えて

4

aplpyのプロット機能は完全にmatplotlibのに基づいているようです。したがって、aplpyで行うことができるプロットの書式設定は、ある方法で行うことも、もう1つはmatplotlibで行うこともできます。

しかし、プロットを作成するためにまだaplpyに固執したいのであれば、複雑なイベントリスナーを必要としないソリューションが必要です。

残念ながら、他のライブラリのプロット関数とは異なり、aplpyは軸を引数にするのではなく、Figureを引数として受け入れるようです。

それにもかかわらずも、自分の作成した後の軸をリンクさせることが可能なはずである。

axes = fig.get_axes() 
axes[0].get_shared_x_axes().join(axes[0], axes[1]) 
axes[0].get_shared_y_axes().join(axes[0], axes[1]) 
axes[0].autoscale() # <-- needed if no axes limits are explicitely set. 
+0

おかげで、私は必要な正確に何のthats。 私はaplpyがmatplotlibを使用していることを知っています。したがって、私はそこで何かを行うことができますが、役立ついくつかの有用なaplpyプロパティがあります。 1つは、ワールド座標を扱うほうがはるかに簡単です(私はヘッダファイルからそれらを取得して、例えば外挿する必要はありません)。もう1つは、拡大すると自動的に変化するビームサイズとスケールバーです。 implowを使用して10または20を入力するよりも、aplpyを使用してこの1つの質問をする方が簡単です。 –

関連する問題