有没有办法在某个 x 值之后停止绘制值?

Is there a way to stop plotting values after certain x value?

我正在使用 matplotlib 绘制神经网络训练结果。

我成功地使用 make_interp_spline 在给定的 x 轴 50(纪元)上绘制了我的结果。¹

当然,x 和 y 的大小相同(都是 9 个值),所以我很容易绘制它们。现在,我必须在同一个图上显示多个结果,所以我需要在 x 轴上使用不同的值,因为某些结果基于值(Epoch - 这是我的 x 轴)> 50(例如 60, 70 等..).

我尝试初始化一个大于 50 的 linspace 并且它有效,但结果呈指数增长。² 有没有办法从 x = 50 开始“删除”点?

另外,如果我在 x 轴上添加值,python 会抛出一个错误提示:

ValueError: Shapes of x (14,) and y (10,) are incompatible

我要把我的成就留到现在。

import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline

listA = [0.00,25.98386517667222,36.10066770794748,
         31.70895801412648,29.430944916297648,
         27.164039966977874,30.26995937742036,
         29.23696275469900,28.11570993620774,
         28.608378364299906]

epochList = [0, 10, 15, 20, 25, 30, 35, 40, 45, 50]

xnew = np.linspace(0, 50, 100)  
spl_A = make_interp_spline(epochList, listA, k=3)

plt.figure(figsize=(15,15))

plt.plot(xnew, spl_A(xnew), label='A')
plt.scatter(epochList,listA)

plt.xlabel('Epochs')
plt.xticks(np.arange(min(epochList), max(epochList)+1, 5.0))

plt.ylabel('MAE')
plt.yticks(np.arange(0, 62, 5.0))

del listA[0]
plt.scatter(epochList[listA.index(min(listA))+1], min(listA), label=F'Best MAE = {min(listA)}', s=200, marker='*', c='black')
plt.legend(loc='upper right', prop={'size': 14})

plt.grid()
plt.show()

你似乎没有改变 listA。从第二张图中,它看起来像是在用新的 xnew 绘制旧的 interolop 函数。由于旧图在末尾是指数的,因此新图的末尾部分变为指数。我假设您有新的 'MAE' 数据用于后来的 'epoch'。因此,您必须将这些数据放入 listA。您显示的错误可能是由于您将新值添加到 epoch 列表但未向 listA.

添加任何内容