Actual source code: ex12.c


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

  4: #include <petscsys.h>
  5: #include <petscdraw.h>

  7: int main(int argc,char **argv)
  8: {
  9:   PetscDraw         draw;
 10:   PetscDrawBar      bar;
 11:   PetscDrawAxis     axis;
 12:   int               color = PETSC_DRAW_ROTATE;
 13:   const char        *xlabel,*ylabel,*toplabel;
 14:   const PetscReal   values[] = {.3, .5, .05, .11};
 15:   const char *const labels[] = {"A","B","C","D",NULL};
 16:   PetscReal         limits[2] = {0,0.55}; PetscInt nlimits = 2;
 17:   PetscBool         nolabels,setlimits;

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

 21:   PetscInitialize(&argc,&argv,NULL,help);
 22:   PetscOptionsHasName(NULL,NULL,"-nolabels",&nolabels);
 23:   if (nolabels) { xlabel = NULL; ylabel = NULL; toplabel = NULL; }
 24:   PetscOptionsGetRealArray(NULL,NULL,"-limits",limits,&nlimits,&setlimits);

 26:   PetscDrawCreate(PETSC_COMM_WORLD,NULL,"Title",PETSC_DECIDE,PETSC_DECIDE,400,300,&draw);
 27:   PetscDrawSetFromOptions(draw);
 28:   PetscDrawBarCreate(draw,&bar);

 30:   PetscDrawBarGetAxis(bar,&axis);
 31:   PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE);
 32:   PetscDrawAxisSetLabels(axis,toplabel,xlabel,ylabel);
 33:   PetscDrawBarSetColor(bar,color);
 34:   PetscDrawBarSetFromOptions(bar);

 36:   if (setlimits) PetscDrawBarSetLimits(bar,limits[0],limits[1]);
 37:   PetscDrawBarSetData(bar,4,values,labels);
 38:   PetscDrawBarDraw(bar);
 39:   PetscDrawBarSave(bar);

 41:   PetscDrawBarDestroy(&bar);
 42:   PetscDrawDestroy(&draw);
 43:   PetscFinalize();
 44:   return 0;
 45: }

 47: /*TEST

 49:    build:
 50:      requires: x

 52:    test:
 53:      output_file: output/ex1_1.out

 55: TEST*/