2013-02-13 15 views
5

matplotlibを使用して、互いに非線形の2つのx軸を持つ図をプロットしようとしています。複数のx軸はお互いに非線形です

Plot

基本的には、年齢が赤方偏移に依存している:私は取得したいプロットは、このようなものです。これは線形ではなく、計算する必要があります。私は年齢と赤の両方をx軸にシフトしたいと思っています。どうしたらいいですか?

答えて

3

機能twiny()があなたが探しているものかもしれません。

import matplotlib.pyplot as plt 
plt.loglog(range(100)) 
ax1 = plt.gca() 
ax2 = ax1.twiny() 
ax2.set_xticks([100,80,50]) 
ax2.set_xticklabels(['0','1','2']) 
ax1.set_xlabel('redshift') 
ax2.set_xlabel('age') 
plt.show() 

example plot for twiny() function

+0

を参照してください。 –

+0

私はこの機能のポイントを得ていませんでした。 2つのx軸は依然として互いに線形であるように見えます。 – Fxyang

+1

私は非線形であなたは対数を意味すると思います。 xtickは任意のティックを配置し、xticklabelsはそれらにラベルを付けることができます。希望が役立ちます。 –

0

私はこれは次のようでした:

from mpl_toolkits.axes_grid.parasite_axes import SubplotHost 
fig = plt.figure(1, figsize=(figwidth,figheight)) 
ax = SubplotHost(fig, 1,1,1) 
fig.add_subplot(ax) 

#plotting as usual 

ax2 = ax.twin() # ax2 is responsible for "top" axis and "right" axis 
ax2.axis["right"].toggle(ticklabels=False) 
ax2.xaxis.set_major_formatter(FuncFormatter(fmt_zToEta)) #set eta coord format 

#with a function for the Z to eta transform for plot labels 
def fmt_zToEta(x, pos=None): 
    #... 
    return transformed_label 

また、私はSubPlotHost事が必要であると思いますが、;-)その赤方偏移の例で

をオフに開始覚えています私はそれがうまく動作していないかどうかをチェックせずに私の既存の(サブ)プロットからこれを抜き出したので、私は100%確実ではない。

編集:また、私がやったが、私は評判が不足しているとして、プロットを投稿することができませんでしたhttps://stackoverflow.com/a/10517481/599884

関連する問題