/* >>>>>>>>>> EXA_13 <<<<<<<<<< */ void exa_13() { int n = 7, i; static char *clr[7] = {"fore", "red", "yello", "cyan", "oran", "green", "blue"}, *cont[7] = {"anta", "afri", "sout" , "aust", "nort", "eura", "lake"}; disini (); hwfont (); setvlt ("small"); pagera (); projct ("hammer"); noclip (); grafmp (-180.f, 180.f, -180.f, 30.f, -90.f, 90.f, -90.f, 30.f); shdpat (16L); for (i = 0; i < n; i++) { color (clr[i]); shdmap (cont[i]); sendbf (); } color ("fore"); gridmp (1, 1); disfin (); }
/* >>>>>>>>>> EXA12_1 <<<<<<<<<< */ void exa12_1 (void) { int n = 50 ,i, j; static int ixp[4] = {200, 1999, 1999, 200}, iyp[4] = {2600, 2600, 801, 801}; double fpi = 3.1415927 / 180., step, x, y; step = 360. / (n - 1); for (i = 0; i < n; i++) { x = i * step; for (j = 0; j < n; j++) { y = j * step; zmat[i][j] = (float) (2 * sin (x * fpi) * sin (y * fpi)); } } setpag ("da4p"); disini (); pagera (); hwfont (); axspos (200, 2600); axslen (1800, 1800); name ("X-axis", "x"); name ("Y-axis", "y"); name ("Z-axis", "z"); titlin ("Surface Plot (SURMAT)", 2); titlin ("F(X,Y) = 2*SIN(X)*SIN(Y)", 4); graf3d (0.f, 360.f, 0.f, 90.f, 0.f, 360.f, 0.f, 90.f, -3.f, 3.f, -3.f, 1.f); height (50); title (); shlsur (); color ("green"); surmat ((float *) zmat, n, n, 1, 1); color ("fore"); grfini (-1.f, -1.f, -1.f, 1.f, -1.f, -1.f, 1.f, 1.f, -1.f); nograf (); graf (0.f, 360.f, 0.f, 90.f, 0.f, 360.f, 0.f, 90.f); dashl (); grid (1,1); grffin (); grfini (-1.f, -1.f, -1.f, -1.f, 1.f, -1.f, -1.f, 1.f, 1.f); graf (0.f, 360.f, 0.f, 90.f, -3.f, 3.f, -3.f, 1.f); grid (1, 1); grffin (); grfini (-1.f, 1.f, -1.f, 1.f, 1.f, -1.f, 1.f, 1.f, 1.f); shdpat (7L); solid (); areaf (ixp, iyp, 4); grffin (); disfin (); }
/* >>>>>>>>>> EX10_3 <<<<<<<<<< */ void ex10_3 (void) { char cbuf[80]; float x[5] = {2., 4., 6., 8., 10.}, y1[5] = {0., 0., 0., 0., 0.}, y2[5] = {3.2, 1.5, 2.0, 1.0, 3.0}; int ic1ray[5] = {50, 150, 100, 200, 175}, ic2ray[5] = {50, 150, 100, 200, 175}; setpag ("da4p"); disini (); pagera (); hwfont (); titlin ("3-D Bar Graph / 3-D Pie Chart", 2); htitle (40); shdpat (16L); axslen (1500, 1000); axspos (300, 1400); barwth (0.5); bartyp ("3dvert"); labels ("second", "bars"); labpos ("outside", "bars"); graf (0., 12., 0., 2., 0., 5., 0., 1.); title (); color ("red"); bars (x, y1, y2, 5); endgrf (); shdpat (16L); labels ("data", "pie"); chnpie ("none"); pieclr (ic1ray, ic2ray, 5); pietyp ("3d"); axspos (300, 2700); piegrf (cbuf, 0, y2, 5); disfin (); }
/* >>>>>>>>>> EXA_8 <<<<<<<<<< */ void exa_8 (void) { int ixp[4], iyp[4], nl, nx, nx0 = 335, ny0 = 350, ny, i, j, ii, k, iclr; static int ix[4] = {0, 300, 300, 0}, iy[4] = {0, 0, 400, 400}; static char *ctit = "Shading Patterns (AREAF)", cstr[3]; disini (); setvlt ("small"); pagera (); hwfont (); height (50); nl = nlmess (ctit); nx = (2970 - nl) / 2; messag (ctit, nx, 200); iclr = 0; for (i = 0; i < 3; i++) { ny = ny0 + i * 600; for (j = 0; j < 6; j++) { nx = nx0 + j * 400; ii = i * 6 + j; shdpat ((long) ii); sprintf (cstr, "%d", ii); iclr = iclr % 8; iclr++; setclr (iclr); for (k = 0; k < 4; k++) { ixp[k] = ix[k] + nx; iyp[k] = iy[k] + ny; } areaf (ixp, iyp, 4); nl = nlmess (cstr); nx += (300 - nl) / 2; messag (cstr, nx, ny + 460); } } disfin (); }
int main ( int argc, char *argv[] ) /******************************************************************************/ /* Purpose: CIRCLE_INOUT uses DISLIN to draw points in and out of a circle. Licensing: This code is distributed under the GNU LGPL license. Modified: 01 May 2011 Author: John Burkardt Reference: Helmut Michels, The Data Plotting Software DISLIN - version 10.4, Shaker Media GmbH, January 2010, ISBN13: 978-3-86858-517-9. */ { int i; int j; int m; int n_circle = 100; int n_in; int n_out; int pat; float pi = 3.14159265; float r; float s; float t; float *x; float *xy_in; float *xy_out; float *y; printf ( "\n" ); printf ( "CIRCLE_INOUT:\n" ); printf ( " C version\n" ); printf ( " Use DISLIN routines to make a scatterplot.\n" ); /* Read the data. */ r4mat_header_read ( "circle_in.txt", &m, &n_in ); xy_in = r4mat_data_read ( "circle_in.txt", m, n_in ); r4mat_header_read ( "circle_out.txt", &m, &n_out ); xy_out = r4mat_data_read ( "circle_out.txt", m, n_out ); /* Specify the format of the output file. */ metafl ( "png" ); /* Indicate that new data overwrites old data. */ filmod ( "delete" ); /* Specify the name of the output graphics file. */ setfil ( "circle_inout.png" ); /* Choose the page size and orientation. 'USA' is 2160 plot units wide and 2790 plot units high. 'P' requests PROFILE rather than LANDSCAPE orientation. */ setpag ( "usap" ); /* For PNG output, use reverse the default black background to white. */ scrmod ( "reverse" ); /* Open DISLIN. */ disini ( ); /* Plot a border around the page. */ pagera ( ); /* Use the COMPLEX font. */ complx ( ); /* Set the axis origin 230 plot units to the right, and 2560 plot units DOWN. */ axspos ( 230, 2560 ); /* Define the X and Y sizes of the axis system in plot units. */ axslen ( 1700, 1700 ); /* Label the X and Y axes. */ name ( "<--- X --->", "X" ); name ( "<--- Y --->", "Y" ); /* Relate the physical coordinates to the axes. */ graf ( 0.0, 1.0, 0.0, 0.1, 0.0, 1.0, 0.0, 0.1 ); /* Define axis system titles. */ titlin ( "Random points inside/outside the unit circle", 1 ); /* Draw the title. */ title ( ); /* Add a grid, with one grid line for every tick mark in the X and Y axes. */ grid ( 1, 1 ); /* Select the shading pattern. */ pat = 16; shdpat ( pat ); /* Set the color to blue. */ color ( "blue" ); /* At every data point, draw a circle of radius 0.01. */ for ( i = 0; i < n_in; i++ ) { rlcirc ( xy_in[0+i*2], xy_in[1+i*2], 0.01 ); } /* Set the color to red. */ color ( "red" ); /* At every data point, draw a circle of radius 0.01. */ for ( i = 0; i < n_out; i++ ) { rlcirc ( xy_out[0+i*2], xy_out[1+i*2], 0.01 ); } /* Draw a red circle. */ x = ( float * ) malloc ( n_circle * sizeof ( float ) ); y = ( float * ) malloc ( n_circle * sizeof ( float ) ); for ( i = 0; i < n_circle; i++ ) { t = pi * ( float ) ( i ) / ( float ) ( n_circle - 1 ); x[i] = cos ( t ); y[i] = sin ( t ); } thkcrv ( 10 ); curve ( x, y, n_circle ); /* End this plot. */ endgrf ( ); /* Free memory. */ free ( x ); free ( xy_in ); free ( xy_out ); free ( y ); /* Close DISLIN. */ disfin ( ); /* Terminate. */ printf ( "\n" ); printf ( "CIRCLE_INOUT:\n" ); printf ( " Normal end of execution.\n" ); return 0; }
int main ( int argc, char *argv[] ) /******************************************************************************/ /* Purpose: MAIN demonstrates the use of bar graphs. Modified: 09 April 2011 Reference: Helmut Michels, The Data Plotting Software DISLIN - version 10.4, Shaker Media GmbH, January 2010, ISBN13: 978-3-86858-517-9. */ { static char cbuf[25]; static char *ctit = "Bar Graphs (BARS)"; int i; int nya = 2700; static float x[9] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; static float y[9] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; static float y1[9] = { 1.0, 1.5, 2.5, 1.3, 2.0, 1.2, 0.7, 1.4, 1.1 }; static float y2[9] = { 2.0, 2.7, 3.5, 2.1, 3.2, 1.9, 2.0, 2.3, 1.8 }; static float y3[9] = { 4.0, 3.5, 4.5, 3.7, 4.0, 2.9, 3.0, 3.2, 2.6 }; printf ( "\n" ); printf ( "DISLIN_EX05:\n" ); printf ( " C version:\n" ); printf ( " Demonstrate the display of data in bar graphs.\n" ); /* Specify the format of the output file. */ metafl ( "png" ); /* Specify that if a file already exists of the given name, the new data should overwrite the old. */ filmod ( "delete" ); /* Specify the name of the output graphics file. */ setfil ( "dislin_ex05.png" ); /* Choose the page size and orientation. */ setpag ( "usap" ); /* For PNG output, reverse the default black background to white. */ scrmod ( "reverse" ); /* Open DISLIN. */ disini ( ); /* Plot a border around the page. */ pagera ( ); /* Use the COMPLEX font. */ complx ( ); ticks ( 1, "x" ); intax ( ); axslen ( 1600, 700 ); titlin ( ctit, 3 ); legini ( cbuf, 3, 8 ); leglin ( cbuf, "FIRST", 1 ); leglin ( cbuf, "SECOND", 2 ); leglin ( cbuf, "THIRD", 3 ); legtit ( " " ); shdpat ( 5L ); for ( i = 1; i <= 3; i++ ) { if ( 1 < i ) { labels ( "none", "x" ); } axspos ( 300, nya-(i-1)*800 ); graf ( 0.0, 10.0, 0.0, 1.0, 0.0, 5.0, 0.0, 1.0 ); if ( i == 1 ) { bargrp ( 3, 0.15 ); color ( "red" ); bars ( x, y, y1, 9 ); color ( "green" ); bars ( x, y, y2, 9 ); color ( "blue" ); bars ( x, y, y3, 9 ); color ( "fore" ); reset ( "bargrp" ); } else if ( i == 2 ) { height ( 30 ); labels ( "delta", "bars" ); labpos ( "center", "bars" ); color ( "red" ); bars ( x, y, y1, 9 ); color ( "green" ); bars ( x, y1, y2, 9 ); color ( "blue" ); bars ( x, y2, y3, 9 ); color ( "fore" ); reset ( "height" ); } else if ( i == 3 ) { labels ( "second", "bars" ); labpos ( "outside", "bars" ); color ( "red" ); bars ( x, y, y1, 9 ); color ( "fore" ); } if ( i < 3 ) { legend ( cbuf, 7 ); } else { height ( 50 ); title ( ); } endgrf ( ); } /* Close DISLIN. */ disfin ( ); /* Terminate. */ printf ( "\n" ); printf ( "DISLIN_EX05:\n" ); printf ( " Normal end of execution.\n" ); return 0; }
/* >>>>>>>>>> EX10_1 <<<<<<<<<< */ void ex10_1 (void) { int nya = 2700, i; static char *ctit = "Bar Graphs (BARS)", cbuf[25]; static float x[9] = {1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f}, y[9] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}, y1[9] = {1.f, 1.5f, 2.5f, 1.3f, 2.0f, 1.2f, 0.7f, 1.4f, 1.1f}, y2[9] = {2.f, 2.7f, 3.5f, 2.1f, 3.2f, 1.9f, 2.0f, 2.3f, 1.8f}, y3[9] = {4.f, 3.5f, 4.5f, 3.7f, 4.0f, 2.9f, 3.0f, 3.2f, 2.6f}; setpag ("da4p"); disini (); pagera (); hwfont (); ticks (1, "x"); intax ();; axslen (1600, 700); titlin (ctit, 3); legini (cbuf, 3, 8); leglin (cbuf, "FIRST", 1); leglin (cbuf, "SECOND", 2); leglin (cbuf, "THIRD", 3); legtit (" "); shdpat (5L); for (i = 1; i <= 3; i++) { if (i > 1) labels ("none", "x"); axspos (300, nya - (i - 1) * 800); graf (0.f, 10.f, 0.f, 1.f, 0.f, 5.f, 0.f, 1.f); if (i == 1) { bargrp (3, 0.15f); color ("red"); bars (x, y, y1, 9); color ("green"); bars (x, y, y2, 9); color ("blue"); bars (x, y, y3, 9); color ("fore"); reset ("bargrp"); } else if (i == 2) { height (30); labels ("delta", "bars"); labpos ("center", "bars"); color ("red"); bars (x, y, y1, 9); color ("green"); bars (x, y1, y2, 9); color ("blue"); bars (x, y2, y3, 9); color ("fore"); reset ("height"); } else if (i == 3) { labels ("second", "bars"); labpos ("outside", "bars"); color ("red"); bars (x, y, y1, 9); color ("fore"); } if (i != 3) legend (cbuf, 7); if (i == 3) { height (50); title (); } endgrf (); } disfin (); }