aqui te posteo un programa que hice

, es parte de un osciloscopio/generador de funciones, que puede que te ayude, pruebalo, con solo que insertes un picture y un boton.
Option Explicit
Dim ejex As Integer
Dim ejey As Integer
Dim acum As Double
Dim x As Integer
Dim y As Integer
Dim dato As Integer
Dim i As Integer
Dim a As Integer
Private Sub Command1_Click()
ejex = 0
ejey = Picture1.Height "inicializo los puntos del grafico
otro:
For acum = 0 To 100 Step 0.15 "aqui genero la onda, en tu caso aqui seria
DoEvents "leer los datos del puerto serial y guardarlos
dato = Sin(acum) * 10 "en dato, a veces es necesario multiplicarlos para
"que se puedan ver bien en la grafica
Call dibujar
For i = 0 To (100) Step 1 "este es un retraso que se le pone para que el
For a = 0 To (10) Step 1 "usuario pueda apreciar la onda
Next a "si se le quita la onda se dibuja muy rapido
Next i
Next acum
GoTo otro
End Sub
Public Sub dibujar()
x = ejex + (10) "defino el valor de x que son los datos del eje x, ejex
"es el dato anterior inicialmente cero ese 10 es para que se aprecie mejor la señal
y = ((Picture1.Height / 2) - ((dato) * 20)) "tomo el valor del alto del cuadro
"entre dos y se le resta el valor que me va dando el valor de la función
"este valor lo multiplico por 20 para que se vea la gráfica
Picture1.Line ((ejex * 3), ejey)-((x * 3), y) "dibujo una linea con los valores
"anteriores
ejex = x
ejey = y
If ejex > Picture1.Width Then "si el valor de ejex es mayor que el ancho del cuadro
ejex = 0 "que ponga a ejex a cero
Picture1.Cls "y que borre pantalla.
"esta parte la hago para que cuando llegue al final del cuadro inicie de nuevo
"del lado izquierdo del cuadro.
End If
End Sub
esos datos arbitrarios de 20, 3 y los demas que estan ahi son experimentales, para ver como se ve mejor la grafica, lo mismo que el retraso. es cuestion de que pruebes, este programa es solo un ejemplo.
con respecto a aspectos de presentacion como lineas de colores o cosas asi tambien se como hacerlo, espero tu respuesta
saludos y espero te sirva