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*/