Actual source code: ex3.c
2: static char help[] = "Plots a simple line graph.\n";
4: #if defined(PETSC_APPLE_FRAMEWORK)
5: #import <PETSc/petscsys.h>
6: #import <PETSc/petscdraw.h>
7: #else
9: #include <petscsys.h>
10: #include <petscdraw.h>
11: #endif
13: int main(int argc,char **argv)
14: {
15: PetscDraw draw;
16: PetscDrawLG lg;
17: PetscDrawAxis axis;
18: PetscInt n = 15,i,x = 0,y = 0,width = 400,height = 300,nports = 1;
19: PetscBool useports,flg;
20: const char *xlabel,*ylabel,*toplabel,*legend;
21: PetscReal xd,yd;
22: PetscDrawViewPorts *ports = NULL;
24: toplabel = "Top Label"; xlabel = "X-axis Label"; ylabel = "Y-axis Label"; legend = "Legend";
26: PetscInitialize(&argc,&argv,NULL,help);
27: PetscOptionsGetInt(NULL,NULL,"-x",&x,NULL);
28: PetscOptionsGetInt(NULL,NULL,"-y",&y,NULL);
29: PetscOptionsGetInt(NULL,NULL,"-width",&width,NULL);
30: PetscOptionsGetInt(NULL,NULL,"-height",&height,NULL);
31: PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);
32: PetscOptionsGetInt(NULL,NULL,"-nports",&nports,&useports);
33: PetscOptionsHasName(NULL,NULL,"-nolegend",&flg);
34: if (flg) legend = NULL;
35: PetscOptionsHasName(NULL,NULL,"-notoplabel",&flg);
36: if (flg) toplabel = NULL;
37: PetscOptionsHasName(NULL,NULL,"-noxlabel",&flg);
38: if (flg) xlabel = NULL;
39: PetscOptionsHasName(NULL,NULL,"-noylabel",&flg);
40: if (flg) ylabel = NULL;
41: PetscOptionsHasName(NULL,NULL,"-nolabels",&flg);
42: if (flg) {toplabel = NULL; xlabel = NULL; ylabel = NULL;}
44: PetscDrawCreate(PETSC_COMM_WORLD,0,"Title",x,y,width,height,&draw);
45: PetscDrawSetFromOptions(draw);
46: if (useports) {
47: PetscDrawViewPortsCreate(draw,nports,&ports);
48: PetscDrawViewPortsSet(ports,0);
49: }
50: PetscDrawLGCreate(draw,1,&lg);
51: PetscDrawLGSetUseMarkers(lg,PETSC_TRUE);
52: PetscDrawLGGetAxis(lg,&axis);
53: PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE);
54: PetscDrawAxisSetLabels(axis,toplabel,xlabel,ylabel);
55: PetscDrawLGSetLegend(lg,&legend);
56: PetscDrawLGSetFromOptions(lg);
58: for (i=0; i<=n; i++) {
59: xd = (PetscReal)(i - 5); yd = xd*xd;
60: PetscDrawLGAddPoint(lg,&xd,&yd);
61: }
62: PetscDrawLGDraw(lg);
63: PetscDrawLGSave(lg);
65: PetscDrawViewPortsDestroy(ports);
66: PetscDrawLGDestroy(&lg);
67: PetscDrawDestroy(&draw);
68: PetscFinalize();
69: return 0;
70: }
72: /*TEST
74: build:
75: requires: x
77: test:
78: output_file: output/ex1_1.out
80: TEST*/