Wbrew pozorom narysowanie wykresu jakiejś funkcji nie jest specjalnie trudne- mając funkcję wystarczy wyliczać wartości dla kolejnych argumentów i wyświetlać w postaci graficznej wynik tych obliczeń:
krok = 1
x = dolna_granica_przedziału
while (x<=gorna_granica_przedziału) do begin
y:=2*x+1;
canvas.pixels[x+width div 2,-y+height div 2]:=$00FFFFFF;
x:=x+krok;
end;
powyższą pętle wykonujemy w granicach pewnego przedziału w którym chcemy zbadać wybraną funkcję. W tym przypadku mamy prostą funkcję f(x)= 2x + 1 dla której wyliczamy kolejne wartości. Następnie wyświetlamy wyliczony punkt przesunięty na ekranie o połowę szerokości i wysokości obszaru rysowania aby punkt (0,0) znajdował się na środku. Warto zwrócić uwagę że wartość jest rysowana ze znakiem ujemnym – jest to konieczne ponieważ ekran komputera posiada oś y skierowaną odwrotnie niż jest to przyjęte w matematyce.
Taki wykres można przeskalować, wówczas wystarczy zmienić linijkę rysującą piksel:
canvas.pixels[skalaX*x+400,-y*skalaY+400]:=$00FFFFFF;
Zastosowanie powyższej metody przy kroku równym 1 spowoduje narysowanie wykresu punktowego. Jeżeli chcemy osiągnąć wykres liniowy należy skorzystać z metody lineto.
Przed pętlą ustawiamy punkt od którego zaczynamy rysowanie:
canvas.moveto(dolna_granica_przedzialu+width div 2,-y+height div 2);
a w pętli zamiast canvas.pixels[...,...]:
canvas.lineto(x+width div 2,-y+height div 2);
Przy takim rozwiązaniu okazuje się jednak, że przy większych powiększeniach i innego rodzaju funkcjach – np. parabolach wykres jest połamany – wynika to z przyjętego kroku, aby tego uniknąć należy przyjmować krok dostatecznie mały, aby nie było tego widać. Ponieważ szerokość pola do rysowania wynosi width, należy przyjąć taki krok aby w badanym przedziale width razy wyliczać wartości funkcji:
krok = (gorna_granica_przedzialu – dolna_granica_przedzialu) / width;