<p>计算与数据的平稳段和增加段相对应的指数。然后分段绘制。这是第一条路径的绘图。要绘制所有路径,可以使用另一个for循环。也许有一个更简单的解决方案,但这应该是可行的</p>
<pre><code># path data
x = np.array([0. , 0.5, 2. , 2.5, 4. , 4.5, 6. , 6.5, 8. , 8.5])
y = np.array([0., 0., 156.626, 156.626, 287.268, 287.268, 418.931, 418.931, 417.211, 417.211])
# indices of plateau and increasing
idx_plat = np.where(np.diff(y) == 0)[0]
idx_incr = np.where(np.diff(y) != 0)[0]
# color for first path
color = 'C0'
# text setup
texts = ['A', 'B', 'C', 'D', 'E']
off = 10 # y offset for text
# plot plateau and increasing segments in a loop
for i in range(len(idx_plat) - 1):
x_sub = x[idx_plat[i]:idx_plat[i+1]]
y_sub = y[idx_plat[i]:idx_plat[i+1]]
plt.plot(x_sub, y_sub, linestyle = ' ', color = color)
# annotate text
plt.text(x_sub.mean(), y_sub[0] + off, texts[i])
for j in range(len(idx_incr) - 1):
x_sub = x[idx_incr[j]:idx_incr[j+1]]
y_sub = y[idx_incr[j]:idx_incr[j+1]]
plt.plot(x_sub, y_sub, linestyle = '-', color = color)
# plot last segment twice with label to create legend
plt.plot(x_sub, y_sub, linestyle = '-', color = color, label = label)
plt.legend(loc = 'best')
</code></pre>