擅长:python、mysql、java
<p>我明白这一切的目的是在同一个图上绘制y值,为什么不直接做呢?
轴可以轻松处理同一绘图上的不同x轴,如下所示:</p>
<pre><code>import numpy as np
import scipy.interpolate as sp
import matplotlib.pyplot as plt
x = [2, 5, 7, 11, 13, 16, 19, 23, 25, 30]
y = [11, 10, 12, 14, 16, 19, 17, 14, 18, 17]
xd = np.linspace(0, max(x), int(max(x)) + 1) # create the new x axis
ipo = sp.splrep(x, y, k=3) # cubic spline
yd = sp.splev(xd, ipo) # interpolated y values
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, label='Original')
ax.plot(xd, yd, label='Interpolated')
plt.legend()
plt.grid()
plt.show()
</code></pre>
<p>如您所愿,每个“y”数据都与它自己的x轴对齐,而无需进行任何预处理。这里所做的唯一插值是Matplotlib用于显示的插值。在</p>
<p>由于您确实需要用Nan填充数组,下面是一种有效的方法:</p>
^{pr2}$
<p>也许可以用一些华丽的单行代码来减少</p>