Actual source code: ex3.c

  2: static char help[] = "Plots a simple line graph.\n";

 4:  #include petscsys.h

  8: int main(int argc,char **argv)
  9: {
 10:   PetscDraw          draw;
 11:   PetscDrawLG        lg;
 12:   PetscDrawAxis      axis;
 13:   PetscInt           n = 20,i,x = 0,y = 0,width = 300,height = 300,nports = 1;
 14:   PetscTruth         flg;
 15:   const char         *xlabel,*ylabel,*toplabel;
 16:   PetscReal          xd,yd;
 17:   PetscDrawViewPorts *ports;
 18:   PetscErrorCode     ierr;

 20:   xlabel = "X-axis Label";toplabel = "Top Label";ylabel = "Y-axis Label";

 22:   PetscInitialize(&argc,&argv,(char*)0,help);
 23:   PetscOptionsGetInt(PETSC_NULL,"-width",&width,PETSC_NULL);
 24:   PetscOptionsGetInt(PETSC_NULL,"-height",&height,PETSC_NULL);
 25:   PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);
 26:   PetscOptionsHasName(PETSC_NULL,"-nolabels",&flg);
 27:   if (flg) {
 28:     xlabel = (char *)0; toplabel = (char *)0;
 29:   }
 30:   PetscDrawCreate(PETSC_COMM_SELF,0,"Title",x,y,width,height,&draw);
 31:   PetscDrawSetFromOptions(draw);
 32:   PetscOptionsGetInt(PETSC_NULL,"-nports",&nports,PETSC_NULL);
 33:   PetscDrawViewPortsCreate(draw,nports,&ports);
 34:   PetscDrawViewPortsSet(ports,0);

 36:   PetscDrawLGCreate(draw,1,&lg);
 37:   PetscDrawLGGetAxis(lg,&axis);
 38:   PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE);
 39:   PetscDrawAxisSetLabels(axis,toplabel,xlabel,ylabel);

 41:   for (i=0; i<n ; i++) {
 42:     xd = (PetscReal)(i - 5); yd = xd*xd;
 43:     PetscDrawLGAddPoint(lg,&xd,&yd);
 44:   }
 45:   PetscDrawLGIndicateDataPoints(lg);
 46:   PetscDrawLGDraw(lg);
 47:   PetscDrawString(draw,-3.,150.0,PETSC_DRAW_BLUE,"A legend");
 48:   PetscDrawFlush(draw);
 49:   PetscSleep(2);

 51:   PetscDrawViewPortsDestroy(ports);
 52:   PetscDrawLGDestroy(lg);
 53:   PetscDrawDestroy(draw);
 54:   PetscFinalize();
 55:   return 0;
 56: }
 57: