xref: /petsc/src/sys/classes/draw/tests/ex12.c (revision d71ae5a4db6382e7f06317b8d368875286fe9008)
1c4762a1bSJed Brown 
2c4762a1bSJed Brown static char help[] = "Makes a simple bar graph.\n";
3c4762a1bSJed Brown 
4c4762a1bSJed Brown #include <petscsys.h>
5c4762a1bSJed Brown #include <petscdraw.h>
6c4762a1bSJed Brown 
7*d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
8*d71ae5a4SJacob Faibussowitsch {
9c4762a1bSJed Brown   PetscDraw         draw;
10c4762a1bSJed Brown   PetscDrawBar      bar;
11c4762a1bSJed Brown   PetscDrawAxis     axis;
12c4762a1bSJed Brown   int               color = PETSC_DRAW_ROTATE;
13c4762a1bSJed Brown   const char       *xlabel, *ylabel, *toplabel;
14c4762a1bSJed Brown   const PetscReal   values[]  = {.3, .5, .05, .11};
15c4762a1bSJed Brown   const char *const labels[]  = {"A", "B", "C", "D", NULL};
169371c9d4SSatish Balay   PetscReal         limits[2] = {0, 0.55};
179371c9d4SSatish Balay   PetscInt          nlimits   = 2;
18c4762a1bSJed Brown   PetscBool         nolabels, setlimits;
19c4762a1bSJed Brown 
209371c9d4SSatish Balay   xlabel   = "X-axis Label";
219371c9d4SSatish Balay   toplabel = "Top Label";
229371c9d4SSatish Balay   ylabel   = "Y-axis Label";
23c4762a1bSJed Brown 
24327415f7SBarry Smith   PetscFunctionBeginUser;
259566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
269566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL, NULL, "-nolabels", &nolabels));
279371c9d4SSatish Balay   if (nolabels) {
289371c9d4SSatish Balay     xlabel   = NULL;
299371c9d4SSatish Balay     ylabel   = NULL;
309371c9d4SSatish Balay     toplabel = NULL;
319371c9d4SSatish Balay   }
329566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetRealArray(NULL, NULL, "-limits", limits, &nlimits, &setlimits));
33c4762a1bSJed Brown 
349566063dSJacob Faibussowitsch   PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, NULL, "Title", PETSC_DECIDE, PETSC_DECIDE, 400, 300, &draw));
359566063dSJacob Faibussowitsch   PetscCall(PetscDrawSetFromOptions(draw));
369566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarCreate(draw, &bar));
37c4762a1bSJed Brown 
389566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarGetAxis(bar, &axis));
399566063dSJacob Faibussowitsch   PetscCall(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE));
409566063dSJacob Faibussowitsch   PetscCall(PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel));
419566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarSetColor(bar, color));
429566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarSetFromOptions(bar));
43c4762a1bSJed Brown 
449566063dSJacob Faibussowitsch   if (setlimits) PetscCall(PetscDrawBarSetLimits(bar, limits[0], limits[1]));
459566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarSetData(bar, 4, values, labels));
469566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarDraw(bar));
479566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarSave(bar));
48c4762a1bSJed Brown 
499566063dSJacob Faibussowitsch   PetscCall(PetscDrawBarDestroy(&bar));
509566063dSJacob Faibussowitsch   PetscCall(PetscDrawDestroy(&draw));
519566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
52b122ec5aSJacob Faibussowitsch   return 0;
53c4762a1bSJed Brown }
54c4762a1bSJed Brown 
55c4762a1bSJed Brown /*TEST
56c4762a1bSJed Brown 
57c4762a1bSJed Brown    build:
58c4762a1bSJed Brown      requires: x
59c4762a1bSJed Brown 
60c4762a1bSJed Brown    test:
61c4762a1bSJed Brown      output_file: output/ex1_1.out
62c4762a1bSJed Brown 
63c4762a1bSJed Brown TEST*/
64