この例は、具体的には、log(redshift + 1)の関数としてデータをプロットすることに関連し、参照赤色シフト軸を有するが、任意の機能修正に容易に一般化することができる。修正された軸に意味のある小目盛りを追加しますか?
私は、ログ(1 +赤色シフト)プロットの上に赤色シフト軸を簡単に追加することができるきれいな小さな関数(ここではいくつかの質問/回答の助けを借りて)を書いています。私はです。は意味のある小さなダニを得るのに苦労しています。ここで
がプロット例を含むコード、次のとおりです。この場合、
が、私は、関数呼び出しでその0.1の変更の柔軟性と、大目盛りで占められていないすべての0.1刻みで赤方偏移をしたいと思います。
import matplotlib.pyplot as plt
import numpy as np
def add_zaxis(axis,denomination):
oldx = axis.get_xlim()
axis.set_xlim(0., None)
zspan = [(10**x)-1 for x in axis.get_xlim()]
denom = denomination
zmax = int(np.floor(zspan[1]/denom))*denom
zspan[1] = zmax
k = len(np.arange(zspan[0],zspan[1],denom))+1
zs = np.linspace(zspan[0],zspan[1],k)
z_ticks = [np.log10(1+x) for x in zs]
axz = axis.twiny()
axz.set_xticks(z_ticks)
axz.set_xticklabels(['{:g}'.format(y) for y in zs])
axz.set_xlim(oldx)
axis.set_xlim(oldx)
return axz
data = np.random.randn(500)
data = data[data>0.]
fig, ax = plt.subplots(1)
plt.hist(np.log10(data+1), bins=22)
ax.set_xlabel('log(z+1)')
ax.minorticks_on()
axz = add_zaxis(ax,.3)
axz.set_xlabel('z')
axz.minorticks_on()
あなたが期待される出力の例の画像を提供してもらえますか? – DavidG