<p>您还可以将数据标准化,使其共享相同的限制,然后“手动”绘制所需的第二个比例的限制。
此函数将数据标准化到第一组点的限制:</p>
<pre><code>def standardize(data):
for a in range(2):
span = max(data[0][a]) - min(data[0][a])
min_ = min(data[0][a])
for idx in range(len(data)):
standardize = (max(data[idx][a]) - min(data[idx][a]))/span
data[idx][a] = [i/standardize + min_ - min([i/standardize
for i in data[idx][a]]) for i in data[idx][a]]
return data
</code></pre>
<p>然后,绘制数据很容易:</p>
<pre><code>import matplotlib.pyplot as plt
data = [[[1,2,3,4,5],[1,2,2,4,1]], [[-1000,-800,-600,-400,-200], [10,20,39,40,50]], [[150,200,250,300,350], [10,20,30,40,50]]]
limits = [(min(data[1][a]), max(data[1][a])) for a in range(2)]
norm_data = standardize(data)
fig, ax = plt.subplots()
for x, y in norm_data:
ax.plot(x, y)
ax2, ax3 = ax.twinx(), ax.twiny()
ax2.set_ylim(limits[1])
ax3.set_xlim(limits[0])
plt.show()
</code></pre>
<p>因为所有数据点都有第一组点的限制,所以我们可以将它们绘制在同一个轴上。然后,使用所需的第二个x和y轴的限制,我们可以设置这两个轴的限制。</p>
<p><a href="https://i.stack.imgur.com/IufBA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/IufBA.png" alt="Rsulting plot"/></a></p>