Your code is highly flawed with unnecessary sequence structures, complicated constructs (e.g. how you parse the data) and way too many local variables (causing race conditions). The diagram that is way too big to efficiently debug. It is incorrect and unnecessary to reset all to default at the end. If things need to be initialized, it should be done at the start of the program. Your orange shift register is not initialized, so the contents will grow forever in consecutive runs.
It is rare that voltage and current values are integers, so why is most of your code blue??? No, there should not be any dynamic data anywhere!
It is extremely hard on the memory manager if you prepend new data to existing arrays. Appending is much more efficient. It would be sufficient to have a single shift register with a 2D array to hold all data. Keep it simple!
A graph is just a passive indicator for whatever data is held in the shift register.. You built your arrays there, so all you need to do is manipulate the contents.
If you just want to chart the last N values, all you really need to do is use a char instead! Charts have a scalar input (among many other possibilities) and have a fixed history where the oldest values are dropped once the history buffer is full. No shift registers or arrays needed.