1 static char help[] = "Makes a simple bar graph.\n";
2
3 #include <petscsys.h>
4 #include <petscdraw.h>
5
main(int argc,char ** argv)6 int main(int argc, char **argv)
7 {
8 PetscDraw draw;
9 PetscDrawBar bar;
10 PetscDrawAxis axis;
11 int color = PETSC_DRAW_ROTATE;
12 const char *xlabel, *ylabel, *toplabel;
13 const PetscReal values[] = {.3, .5, .05, .11};
14 const char *const labels[] = {"A", "B", "C", "D", NULL};
15 PetscReal limits[2] = {0, 0.55};
16 PetscInt nlimits = 2;
17 PetscBool nolabels, setlimits;
18
19 xlabel = "X-axis Label";
20 toplabel = "Top Label";
21 ylabel = "Y-axis Label";
22
23 PetscFunctionBeginUser;
24 PetscCall(PetscInitialize(&argc, &argv, NULL, help));
25 PetscCall(PetscOptionsHasName(NULL, NULL, "-nolabels", &nolabels));
26 if (nolabels) {
27 xlabel = NULL;
28 ylabel = NULL;
29 toplabel = NULL;
30 }
31 PetscCall(PetscOptionsGetRealArray(NULL, NULL, "-limits", limits, &nlimits, &setlimits));
32
33 PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, NULL, "Title", PETSC_DECIDE, PETSC_DECIDE, 400, 300, &draw));
34 PetscCall(PetscDrawSetFromOptions(draw));
35 PetscCall(PetscDrawBarCreate(draw, &bar));
36
37 PetscCall(PetscDrawBarGetAxis(bar, &axis));
38 PetscCall(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE));
39 PetscCall(PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel));
40 PetscCall(PetscDrawBarSetColor(bar, color));
41 PetscCall(PetscDrawBarSetFromOptions(bar));
42
43 if (setlimits) PetscCall(PetscDrawBarSetLimits(bar, limits[0], limits[1]));
44 PetscCall(PetscDrawBarSetData(bar, 4, values, labels));
45 PetscCall(PetscDrawBarDraw(bar));
46 PetscCall(PetscDrawBarSave(bar));
47
48 PetscCall(PetscDrawBarDestroy(&bar));
49 PetscCall(PetscDrawDestroy(&draw));
50 PetscCall(PetscFinalize());
51 return 0;
52 }
53
54 /*TEST
55
56 build:
57 requires: x
58
59 test:
60 output_file: output/empty.out
61
62 TEST*/
63