<p><a href="https://stackoverflow.com/a/21870368/7204790">From the response of user1318806 to cphlewis</a>:</p>
<blockquote>
<p>Thank you. Actually <strong>I wanted a combination of log+linear on the x</strong> axis not y. But I assume your code should be easily adaptable.</p>
</blockquote>
<p>你好!如果您想要x轴上的log+线性组合(根据<a href="https://stackoverflow.com/questions/21746491/combining-a-log-and-linear-scale-in-matplotlib/34797574#34797574">Duncan Watts and CubeJockey</a>的代码模式):</p>
<pre><code>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(np.sin(xdomain), xdomain)
axMain.set_xscale('linear')
axMain.set_xlim((0.5, 1.5))
axMain.spines['left'].set_visible(False)
axMain.yaxis.set_ticks_position('right')
axMain.yaxis.set_visible(False)
divider = make_axes_locatable(axMain)
axLin = divider.append_axes("left", size=2.0, pad=0, sharey=axMain)
axLin.set_xscale('log')
axLin.set_xlim((0.01, 0.5))
axLin.plot(np.sin(xdomain), xdomain)
axLin.spines['right'].set_visible(False)
axLin.yaxis.set_ticks_position('left')
plt.setp(axLin.get_xticklabels(), visible=True)
plt.title('Linear right, log left')
</code></pre>
<p>上面的代码产生:<img src="https://i.imgur.com/621OijT.png" alt="Answer1"/></p>
<p>(杂项)这里有一个非常小的标题固定,右边没有记号:</p>
<pre><code># Fix for: title + no tick marks on the right side of the plot
ax2 = axLin.twinx()
ax2.spines['left'].set_visible(False)
ax2.tick_params(axis='y',which='both',labelright='off')
</code></pre>
<p>添加这些行将得到:<img src="https://i.imgur.com/PfV0YEt.png" alt="Answer2"/></p>
<p><a href="/questions/tagged/python" class="post-tag" title="show questions tagged 'python'" rel="tag">python</a><a href="/questions/tagged/matplotlib" class="post-tag" title="show questions tagged 'matplotlib'" rel="tag">matplotlib</a></p>