xref: /petsc/src/sys/classes/draw/tests/ex9.c (revision 609caa7c8c030312b00807b4f015fd827bb80932)
1c4762a1bSJed Brown static char help[] = "Makes a simple histogram.\n";
2c4762a1bSJed Brown 
3c4762a1bSJed Brown #include <petscsys.h>
4c4762a1bSJed Brown #include <petscdraw.h>
5c4762a1bSJed Brown 
main(int argc,char ** argv)6d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
7d71ae5a4SJacob Faibussowitsch {
8c4762a1bSJed Brown   PetscDraw     draw;
9c4762a1bSJed Brown   PetscDrawHG   hist;
10c4762a1bSJed Brown   PetscDrawAxis axis;
11c4762a1bSJed Brown   int           n = 20, i, x = 0, y = 0, width = 400, height = 300, bins = 8;
12c4762a1bSJed Brown   PetscInt      w = 400, h = 300, nn = 20, b = 8, c = PETSC_DRAW_GREEN;
13c4762a1bSJed Brown   int           color = PETSC_DRAW_GREEN;
14c4762a1bSJed Brown   const char   *xlabel, *ylabel, *toplabel;
15c4762a1bSJed Brown   PetscReal     xd;
16c4762a1bSJed Brown   PetscBool     flg;
17c4762a1bSJed Brown 
189371c9d4SSatish Balay   xlabel   = "X-axis Label";
199371c9d4SSatish Balay   toplabel = "Top Label";
209371c9d4SSatish Balay   ylabel   = "Y-axis Label";
21c4762a1bSJed Brown 
22327415f7SBarry Smith   PetscFunctionBeginUser;
239566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
249566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-width", &w, NULL));
259566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-height", &h, NULL));
269566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &nn, NULL));
279566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-bins", &b, NULL));
289566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-color", &c, NULL));
299566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL, NULL, "-nolabels", &flg));
30300f1712SStefano Zampini   PetscCall(PetscCIntCast(w, &width));
31300f1712SStefano Zampini   PetscCall(PetscCIntCast(h, &height));
32300f1712SStefano Zampini   PetscCall(PetscCIntCast(nn, &n));
33300f1712SStefano Zampini   PetscCall(PetscCIntCast(b, &bins));
34300f1712SStefano Zampini   PetscCall(PetscCIntCast(c, &color));
359371c9d4SSatish Balay   if (flg) {
369371c9d4SSatish Balay     xlabel   = NULL;
379371c9d4SSatish Balay     ylabel   = NULL;
389371c9d4SSatish Balay     toplabel = NULL;
399371c9d4SSatish Balay   }
40c4762a1bSJed Brown 
419566063dSJacob Faibussowitsch   PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, 0, "Title", x, y, width, height, &draw));
429566063dSJacob Faibussowitsch   PetscCall(PetscDrawSetFromOptions(draw));
439566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGCreate(draw, bins, &hist));
449566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGSetColor(hist, color));
459566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGGetAxis(hist, &axis));
469566063dSJacob Faibussowitsch   PetscCall(PetscDrawAxisSetColors(axis, PETSC_DRAW_BLACK, PETSC_DRAW_RED, PETSC_DRAW_BLUE));
479566063dSJacob Faibussowitsch   PetscCall(PetscDrawAxisSetLabels(axis, toplabel, xlabel, ylabel));
489566063dSJacob Faibussowitsch   /* PetscCall(PetscDrawHGSetFromOptions(hist)); */
49c4762a1bSJed Brown 
50c4762a1bSJed Brown   for (i = 0; i < n; i++) {
51c4762a1bSJed Brown     xd = (PetscReal)(i - 5);
529566063dSJacob Faibussowitsch     PetscCall(PetscDrawHGAddValue(hist, xd * xd));
53c4762a1bSJed Brown   }
549566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGDraw(hist));
559566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGSave(hist));
56c4762a1bSJed Brown 
579566063dSJacob Faibussowitsch   PetscCall(PetscDrawHGDestroy(&hist));
589566063dSJacob Faibussowitsch   PetscCall(PetscDrawDestroy(&draw));
599566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
60b122ec5aSJacob Faibussowitsch   return 0;
61c4762a1bSJed Brown }
62c4762a1bSJed Brown 
63c4762a1bSJed Brown /*TEST
64c4762a1bSJed Brown 
65c4762a1bSJed Brown    build:
66c4762a1bSJed Brown      requires: x
67c4762a1bSJed Brown 
68c4762a1bSJed Brown    test:
69*3886731fSPierre Jolivet      output_file: output/empty.out
70c4762a1bSJed Brown 
71c4762a1bSJed Brown TEST*/
72