<p>这里是一个尝试回答后,与一些人交谈,并感谢@BusyBeaver。在</p>
<p>我同意这个问题是不恰当的,我会修改它以澄清(欢迎大家!)。在</p>
<p>我确实认为写在stackoverflow上很有用。在</p>
<p>代码:</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import AutoMinorLocator
# Necessary functions
def tick_function(x):
"""Specify tick format"""
return ["%2.f" % i for i in x]
def func(x):
"""This can be anything you like"""
funcx=np.log10(1.0+x)
return funcx
z=np.linspace(0.0,4.0,20)
np.random.seed(seed=1234)
y=np.random.normal(10.0,1.0,len(z))
# Set up the plot
fig,ax1 = subplots()
ax1.xaxis.set_minor_locator(AutoMinorLocator())
ax1.yaxis.set_minor_locator(AutoMinorLocator())
# Set up the second axis
ax2 = ax1.twiny()
# The tick positions can be at arbitrary positions
zticks=np.arange(z[0],z[-1]+1)
ax2.set_xticks(func(zticks))
ax2.set_xticklabels(tick_function(zticks))
ax2.set_xlim(func(z[0]),func(z[-1]))
ax1.set_ylim(5.0,15.0)
ax1.set_xlabel(r'$\log_{10}\left(1+z\right)$')
ax2.set_xlabel(r'$z$')
ax1.set_ylabel('amplitude/arb. units')
plt.tick_params(axis='both',which = 'major', labelsize=8, width=2)
plt.tick_params(axis='both',which = 'minor', labelsize=8, width=1)
_=ax1.plot(func(z),y,'k.')
plt.savefig('lnopz2.png')
</code></pre>
<p><a href="https://i.stack.imgur.com/wBIz1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/wBIz1.png" alt="Plot generated from the above code"/></a></p>
<p>我不知道如何控制ax2小刻度上限(例如,每0.5次)。在</p>