<p>这个解决方案对<a href="https://stackoverflow.com/a/21870368/4771017">cphlewis's answer</a>进行了添加,这样就有了一个平滑的转换,并且绘图似乎有一致的记号标记。我的零钱加上了这三行:</p>
<p><code>axLin.spines['bottom'].set_visible(False)</code></p>
<p><code>axLin.xaxis.set_ticks_position('top')</code></p>
<p><code>plt.setp(axLin.get_xticklabels(), visible=False)</code></p>
<p>总的来说,代码是</p>
<pre><code># linear and log axes for the same plot?
# starting with the histogram example from
# http://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
# Numbers from -50 to 50, with 0.1 as step
xdomain = np.arange(-50,50, 0.1)
axMain = plt.subplot(111)
axMain.plot(xdomain, np.sin(xdomain))
axMain.set_yscale('log')
axMain.set_ylim((0.01, 0.5))
axMain.spines['top'].set_visible(False)
axMain.xaxis.set_ticks_position('bottom')
divider = make_axes_locatable(axMain)
axLin = divider.append_axes("top", size=2.0, pad=0, sharex=axMain)
axLin.plot(xdomain, np.sin(xdomain))
axLin.set_xscale('linear')
axLin.set_ylim((0.5, 1.5))
# Removes bottom axis line
axLin.spines['bottom'].set_visible(False)
axLin.xaxis.set_ticks_position('top')
plt.setp(axLin.get_xticklabels(), visible=False)
plt.title('Linear above, log below')
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/BWjsN.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BWjsN.png" alt="enter image description here"/></a></p>