NAME

Image::Leptonica::Func::gplot

VERSION

version 0.04

gplot.c

gplot.c

   Basic plotting functions
        GPLOT      *gplotCreate()
        void        gplotDestroy()
        l_int32     gplotAddPlot()
        l_int32     gplotSetScaling()
        l_int32     gplotMakeOutput()
        l_int32     gplotGenCommandFile()
        l_int32     gplotGenDataFiles()

   Quick and dirty plots
        l_int32     gplotSimple1()
        l_int32     gplotSimple2()
        l_int32     gplotSimpleN()

   Serialize for I/O
        GPLOT      *gplotRead()
        l_int32     gplotWrite()


   Utility for programmatic plotting using gnuplot 7.3.2 or later
   Enabled:
       - output to png (color), ps (mono), x11 (color), latex (mono)
       - optional title for graph
       - optional x and y axis labels
       - multiple plots on one frame
       - optional title for each plot on the frame
       - optional log scaling on either or both axes
       - choice of 5 plot styles for each plot
       - choice of 2 plot modes, either using one input array
         (Y vs index) or two input arrays (Y vs X).  This
         choice is made implicitly depending on the number of
         input arrays.

   Usage:
       gplotCreate() initializes for plotting
       gplotAddPlot() for each plot on the frame
       gplotMakeOutput() to generate all output files and run gnuplot
       gplotDestroy() to clean up

   Example of use:
       gplot = gplotCreate("tempskew", GPLOT_PNG, "Skew score vs angle",
                  "angle (deg)", "score");
       gplotAddPlot(gplot, natheta, nascore1, GPLOT_LINES, "plot 1");
       gplotAddPlot(gplot, natheta, nascore2, GPLOT_POINTS, "plot 2");
       gplotSetScaling(gplot, GPLOT_LOG_SCALE_Y);
       gplotMakeOutput(gplot);
       gplotDestroy(&gplot);

   Note for output to GPLOT_LATEX:
       This creates latex output of the plot, named <rootname>.tex.
       It needs to be placed in a latex file <latexname>.tex
       that precedes the plot output with, at a minimum:
         \documentclass{article}
         \begin{document}
       and ends with
         \end{document}
       You can then generate a dvi file <latexname>.dvi using
         latex <latexname>.tex
       and a PostScript file <psname>.ps from that using
         dvips -o <psname>.ps <latexname>.dvi

FUNCTIONS

gplotAddPlot

l_int32 gplotAddPlot ( GPLOT *gplot, NUMA *nax, NUMA *nay, l_int32 plotstyle, const char *plottitle )

gplotAddPlot()

    Input:  gplot
            nax (<optional> numa: set to null for Y_VS_I;
                 required for Y_VS_X)
            nay (numa: required for both Y_VS_I and Y_VS_X)
            plotstyle (GPLOT_LINES, GPLOT_POINTS, GPLOT_IMPULSES,
                       GPLOT_LINESPOINTS, GPLOT_DOTS)
            plottitle  (<optional> title for individual plot)
    Return: 0 if OK, 1 on error

Notes:
    (1) There are 2 options for (x,y) values:
          o  To plot an array vs the index, set nax = NULL.
          o  To plot one array vs another, use both nax and nay.
    (2) If nax is defined, it must be the same size as nay.
    (3) The 'plottitle' string can have spaces, double
        quotes and backquotes, but not single quotes.

gplotCreate

GPLOT * gplotCreate ( const char *rootname, l_int32 outformat, const char *title, const char *xlabel, const char *ylabel )

gplotCreate()

    Input:  rootname (root for all output files)
            outformat (GPLOT_PNG, GPLOT_PS, GPLOT_EPS, GPLOT_X11,
                       GPLOT_LATEX)
            title  (<optional> overall title)
            xlabel (<optional> x axis label)
            ylabel (<optional> y axis label)
    Return: gplot, or null on error

Notes:
    (1) This initializes the plot.
    (2) The 'title', 'xlabel' and 'ylabel' strings can have spaces,
        double quotes and backquotes, but not single quotes.

gplotDestroy

void gplotDestroy ( GPLOT **pgplot )

gplotDestroy()

     Input: &gplot (<to be nulled>)
     Return: void

gplotGenCommandFile

l_int32 gplotGenCommandFile ( GPLOT *gplot )

gplotGenCommandFile()

    Input:  gplot
    Return: 0 if OK, 1 on error

gplotGenDataFiles

l_int32 gplotGenDataFiles ( GPLOT *gplot )

gplotGenDataFiles()

    Input:  gplot
    Return: 0 if OK, 1 on error

gplotMakeOutput

l_int32 gplotMakeOutput ( GPLOT *gplot )

gplotMakeOutput()

    Input:  gplot
    Return: 0 if OK; 1 on error

Notes:
    (1) This uses gplot and the new arrays to add a plot
        to the output, by writing a new data file and appending
        the appropriate plot commands to the command file.
    (2) The gnuplot program for windows is wgnuplot.exe.  The
        standard gp426win32 distribution does not have a X11 terminal.

gplotRead

GPLOT * gplotRead ( const char *filename )

gplotRead()

    Input:  filename
    Return: gplot, or NULL on error

gplotSetScaling

l_int32 gplotSetScaling ( GPLOT *gplot, l_int32 scaling )

gplotSetScaling()

    Input:  gplot
            scaling (GPLOT_LINEAR_SCALE, GPLOT_LOG_SCALE_X,
                     GPLOT_LOG_SCALE_Y, GPLOT_LOG_SCALE_X_Y)
    Return: 0 if OK; 1 on error

Notes:
    (1) By default, the x and y axis scaling is linear.
    (2) Call this function to set semi-log or log-log scaling.

gplotSimple1

l_int32 gplotSimple1 ( NUMA *na, l_int32 outformat, const char *outroot, const char *title )

gplotSimple1()

    Input:  na (numa; plot Y_VS_I)
            outformat (GPLOT_PNG, GPLOT_PS, GPLOT_EPS, GPLOT_X11,
                       GPLOT_LATEX)
            outroot (root of output files)
            title  (<optional>, can be NULL)
    Return: 0 if OK, 1 on error

Notes:
    (1) This gives a line plot of a numa, where the array value
        is plotted vs the array index.  The plot is generated
        in the specified output format; the title  is optional.
    (2) When calling this function more than once, be sure the
        outroot strings are different; otherwise, you will
        overwrite the output files.

gplotSimple2

l_int32 gplotSimple2 ( NUMA *na1, NUMA *na2, l_int32 outformat, const char *outroot, const char *title )

gplotSimple2()

    Input:  na1 (numa; we plot Y_VS_I)
            na2 (ditto)
            outformat (GPLOT_PNG, GPLOT_PS, GPLOT_EPS, GPLOT_X11,
                       GPLOT_LATEX)
            outroot (root of output files)
            title  (<optional>)
    Return: 0 if OK, 1 on error

Notes:
    (1) This gives a line plot of two numa, where the array values
        are each plotted vs the array index.  The plot is generated
        in the specified output format; the title  is optional.
    (2) When calling this function more than once, be sure the
        outroot strings are different; otherwise, you will
        overwrite the output files.

gplotSimpleN

l_int32 gplotSimpleN ( NUMAA *naa, l_int32 outformat, const char *outroot, const char *title )

gplotSimpleN()

    Input:  naa (numaa; we plot Y_VS_I for each numa)
            outformat (GPLOT_PNG, GPLOT_PS, GPLOT_EPS, GPLOT_X11,
                       GPLOT_LATEX)
            outroot (root of output files)
            title (<optional>)
    Return: 0 if OK, 1 on error

Notes:
    (1) This gives a line plot of all numas in a numaa (array of numa),
        where the array values are each plotted vs the array index.
        The plot is generated in the specified output format;
        the title  is optional.
    (2) When calling this function more than once, be sure the
        outroot strings are different; otherwise, you will
        overwrite the output files.

gplotWrite

l_int32 gplotWrite ( const char *filename, GPLOT *gplot )

gplotWrite()

    Input:  filename
            gplot
    Return: 0 if OK; 1 on error

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Zakariyya Mughal.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.