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};
 17:   PetscInt          nlimits   = 2;
 18:   PetscBool         nolabels, setlimits;

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

 25:   PetscInitialize(&argc, &argv, NULL, help);
 26:   PetscOptionsHasName(NULL, NULL, "-nolabels", &nolabels);
 27:   if (nolabels) {
 28:     xlabel   = NULL;
 29:     ylabel   = NULL;
 30:     toplabel = NULL;
 31:   }
 32:   PetscOptionsGetRealArray(NULL, NULL, "-limits", limits, &nlimits, &setlimits);

 34:   PetscDrawCreate(PETSC_COMM_WORLD, NULL, "Title", PETSC_DECIDE, PETSC_DECIDE, 400, 300, &draw);
 35:   PetscDrawSetFromOptions(draw);
 36:   PetscDrawBarCreate(draw, &bar);

 38:   PetscDrawBarGetAxis(bar, &axis);
 39:   PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE);
 40:   PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel);
 41:   PetscDrawBarSetColor(bar, color);
 42:   PetscDrawBarSetFromOptions(bar);

 44:   if (setlimits) PetscDrawBarSetLimits(bar, limits[0], limits[1]);
 45:   PetscDrawBarSetData(bar, 4, values, labels);
 46:   PetscDrawBarDraw(bar);
 47:   PetscDrawBarSave(bar);

 49:   PetscDrawBarDestroy(&bar);
 50:   PetscDrawDestroy(&draw);
 51:   PetscFinalize();
 52:   return 0;
 53: }

 55: /*TEST

 57:    build:
 58:      requires: x

 60:    test:
 61:      output_file: output/ex1_1.out

 63: TEST*/