回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我画了一个图形,将两个y轴(即两个不同的S.I.刻度)与一个x轴相关。我必须放大一些值,并使用Matplotlib中的zoom_inset_locator技巧来管理它。我实现了缩放轴,但缺少第二个y轴(请参见下面的示例):</p>
<p><img src="https://i.stack.imgur.com/xJCiu.png" alt="Two-y axis and an inset zoom"/></p>
<p>它确实再次尝试使用twinx()添加第二个轴,但失败了,因为它在主双轴(右)轴上绘制轴,但在缩放右轴上留下空白标记,似乎对x轴进行了正确处理,如下所示:</p>
<p><img src="https://i.stack.imgur.com/DQKJC.png" alt="enter image description here"/></p>
<p>有什么解决办法吗?下面是我用来绘制图形的代码:</p>
<pre><code>import numpy,os,sys
import pylab
import scipy.optimize
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
# Initializing the curve
fig_cal=pylab.figure()
host_weight = fig_cal.add_subplot(111)
host_mass = host_weight.twinx()
Tension = numpy.linspace(0,0.08,100)
Weight = 0.5* Tension
Mass = Weight/9.81
# Plotting the curve
host_weight.plot(Tension, Weight, 'r', label='Fitted line',lw=2)
host_mass.plot(Tension, Mass)
# Cosmetic on the Figure
host_weight.set_xlabel("Tension U [$V$]")
host_weight.set_ylabel("Weight F [$N$]")
host_mass.set_ylabel("Mass M [$kg$]")
host_mass.set_ylim(host_weight.axis()[-2]/9.81, host_weight.axis()[-1]/9.81)
host_weight.grid(False)
# Zoom on the first measurement
zoom_weight = zoomed_inset_axes(host_weight, zoom = 7.5, bbox_to_anchor=(0.95,0.5), bbox_transform=host_weight.transAxes)
zoom_weight.plot(Tension[:4], Weight[:4], 'r', lw=2)
zoom_weight.set_xticks(zoom_weight.xaxis.get_majorticklocs()[::2])
zoom_weight.set_yticks(zoom_weight.yaxis.get_majorticklocs()[::2])
# zoom_mass = zoom_weight.twinx()
# zoom_mass.plot(Tension[:4], Mass[:4],alpha=0)
# zoom_mass.set_ylim(zoom_weight.axis()[-2]/9.81,zoom_weight.axis()[-1]/9.81)
mark_inset(host_weight, zoom_weight, loc1=2, loc2=4, fc="none", ec="0.5")
pylab.show()
</code></pre>