5

matplotlib を使用して、互いに非線形である 2 つの x 軸を持つ図をプロットしようとしています。私が取得したいプロットは次のようなものです:

プロット

基本的に、年齢は赤方偏移に依存します。それは非線形であり、計算する必要があります。年齢と赤方偏移の両方を x 軸にしたいと思います。どうすれば作れますか?

4

2 に答える 2

4

その機能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()

twiny() 関数のプロット例

于 2013-02-13T03:28:31.747 に答える
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を参照してください

于 2013-07-24T11:50:46.473 に答える