Task

Plot a function represented as     x,  y     numerical arrays.

Post the resulting image for the following input arrays (taken from Python's Example section on Time a function):

      x = {0,   1,    2,    3,    4,    5,     6,     7,     8,     9};
      y = {2.7, 2.8, 31.4, 38.1, 58.0, 76.2, 100.5, 130.0, 149.3, 180.0};

This task is intended as a subtask for Measure relative performance of sorting algorithms implementations.




include c:\cxpl\codes;          \intrinsic 'code' declarations
 
def     ScrW=640, ScrH=480, VidMode=$101;
def     Sx = ScrW/10,           \pixels per horz grid line
        Sy = ScrH/10,           \pixels per vert grid line
        Ox = (3+1+1)*8+2,       \offset for horz grid: allow room for "180.0"
        Oy = ScrH-20;           \offset for vert grid: allow room for labels
int     X, DataX;
real    Y, DataY, Gain;
def     Brown=6, LCyan=11;
 
[DataX:= [0,   1,    2,    3,    4,    5,     6,     7,     8,     9];
 DataY:= [2.7, 2.8, 31.4, 38.1, 58.0, 76.2, 100.5, 130.0, 149.3, 180.0];
 
SetVid(VidMode);
for X:= 0 to 9 do                                               \draw grid
        [Move(X*Sx+Ox, Oy);  Line(X*Sx+Ox, Oy-9*Sy, Brown);     \vert lines
         Move(Ox, Oy-X*Sy);  Line(9*Sx+Ox, Oy-X*Sy, Brown);     \horz lines
        ];
Format(3,1);  Attrib(LCyan);                                    \label grid
Y:= 0.0;
for X:= 0 to 9 do
        [Move(X*Sx+Ox-3, Oy+6); IntOut(6, X);                   \X axis
         Move(0, Oy-X*Sy-7);     RlOut(6, Y);                   \Y axis
        Y:= Y + 20.0;
        ];
Gain:= float(Sy)/20.0;
Move(DataX(0)*Sx+Ox, Oy-Fix(DataY(0)*Gain));                    \plot points
for X:= 1 to 9 do
        Line(DataX(X)*Sx+Ox, Oy-Fix(DataY(X)*Gain), LCyan);
 
if ChIn(1) then [];                                             \wait for key
SetVid(3);                                                      \restore text
]