Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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

I’m using matplotlib for plotting results from training a Neural Network.

I successfully managed to plot my result using make_interp_spline on a given x-axis of 50 (Epochs).¹

Of course, x and y have the same size (both have 9 values), so it was easy for me to plot them. Now, I have to show multiple results on the same plot and so I need a different value on the x-axis, because certain results are based on a value (Epoch – which is my x-axis) > 50 (such as 60,70, etc..).

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I tried to initialize a linspace > 50 and it works, but the results are going up in an exponential way.²
Is there a way to "delete" points starting from x = 50?

Plus, if I add values in the x-axis, python throws me an error saying:

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

I’m going to leave what I achieved until now.

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()

¹ ²

>Solution :

You don’t seem to be changing listA. From the second graph, it looks like it’s plotting the old interolop function with new xnew. Since the old graph is exponential at the end, the new graph’s end part becomes exponential. I am assuming you have new ‘MAE’ data for the later ‘epoch’. So, you have to put those data in listA. The error you showed likely occurred from you adding new values to epoch list but not adding anything to listA.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading