有没有办法在某个 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
.
添加任何内容
我正在使用 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
.