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