artperl has asked for the wisdom of the Perl Monks concerning the following question:

hi, i have a set of data (Y-axis) over time (X-axis) that im trying to figure out a way how to plot it in simple html using perl script. appreciate all your usual inputs.

Replies are listed 'Best First'.
Re: simple html trend line
by hippo (Archbishop) on Apr 18, 2015 at 13:25 UTC

    If you really want to "plot it in simple html using perl script" that probably means SVG, so something like SVG::Graph might be an appropriate starting point.

    However, if the "in simple HTML" is not an actual requirement then there is a whole other world of possibilities.

      If so, did you try running the synopsis code?

      And if so, did you get a whole bunch of warnings when you ran it?:

      C:\test>SVG-t.pl > test.svg Use of uninitialized value $_ in addition (+) at C:/perl64/site/lib/St +atistics/Descriptive.pm line 151. Use of uninitialized value $_ in exponentiation (**) at C:/perl64/site +/lib/Statistics/Descriptive.pm line 1 Use of uninitialized value $max in numeric ge (>=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 154 Use of uninitialized value $_ in numeric ge (>=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 154. Use of uninitialized value $min in numeric le (<=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 158 Use of uninitialized value $_ in numeric le (<=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 158. Use of uninitialized value $_ in addition (+) at C:/perl64/site/lib/St +atistics/Descriptive.pm line 151. Use of uninitialized value $_ in exponentiation (**) at C:/perl64/site +/lib/Statistics/Descriptive.pm line 1 Use of uninitialized value $max in numeric ge (>=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 154 Use of uninitialized value $_ in numeric ge (>=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 154. Use of uninitialized value $min in numeric le (<=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 158 Use of uninitialized value $_ in numeric le (<=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 158. Use of uninitialized value $_ in addition (+) at C:/perl64/site/lib/St +atistics/Descriptive.pm line 151. Use of uninitialized value $_ in exponentiation (**) at C:/perl64/site +/lib/Statistics/Descriptive.pm line 1 Use of uninitialized value $max in numeric ge (>=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 154 Use of uninitialized value $_ in numeric ge (>=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 154. Use of uninitialized value $min in numeric le (<=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 158 Use of uninitialized value $_ in numeric le (<=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 158. Use of uninitialized value $_ in addition (+) at C:/perl64/site/lib/St +atistics/Descriptive.pm line 151. Use of uninitialized value $_ in exponentiation (**) at C:/perl64/site +/lib/Statistics/Descriptive.pm line 1 Use of uninitialized value $max in numeric ge (>=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 154 Use of uninitialized value $_ in numeric ge (>=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 154. Use of uninitialized value $min in numeric le (<=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 158 Use of uninitialized value $_ in numeric le (<=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 158. Use of uninitialized value $_ in addition (+) at C:/perl64/site/lib/St +atistics/Descriptive.pm line 151. Use of uninitialized value $_ in exponentiation (**) at C:/perl64/site +/lib/Statistics/Descriptive.pm line 1 Use of uninitialized value $max in numeric ge (>=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 154 Use of uninitialized value $_ in numeric ge (>=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 154. Use of uninitialized value $min in numeric le (<=) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 158 Use of uninitialized value $_ in numeric le (<=) at C:/perl64/site/lib +/Statistics/Descriptive.pm line 158. Use of uninitialized value $min in subtraction (-) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 168 Use of uninitialized value $max in subtraction (-) at C:/perl64/site/l +ib/Statistics/Descriptive.pm line 168 Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 92. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 92. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 92. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 92. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 76. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 92. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 154. Use of uninitialized value in multiplication (*) at C:/perl64/site/lib +/SVG/Graph/Glyph/axis.pm line 168. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581. Use of uninitialized value $txt[0] in join or string at C:/perl64/site +/lib/SVG/Element.pm line 581.

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
      In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked

        I did, and it only worked after doing a "cpan SVG::Graph" to install the Perl Module.

        But how about this other approach: Write only the data using perl, creating an html that uses javascript libraries http://webdesignledger.com/resources/13-useful-javascript-solutions-for-charts-and-graphs to further generate the image. I used flot succesfully in the past. This way, perl only writes the html and the javascript library takes care of the plotting

        Then there is "use Image::Magick;" to create a surface and plot your points by hand, then save the graphics file, there was this node... create PNG image

        Then there is this inline graphics, I do no recommend it for this type of job: http://www.websiteoptimization.com/speed/tweak/inline-images/

        And somewhere on the web there is this table which are 1x1 pixels big, and basically, the table looks like a mspaint canvas at that size. Also not recommended, but it works.

Re: simple html trend line
by hdb (Monsignor) on Apr 18, 2015 at 13:22 UTC
Re: simple html trend line
by ambrus (Abbot) on Apr 20, 2015 at 16:57 UTC

    I recommend executing gnuplot for all your plotting needs. Please see Plot a spiral with gnuplot for an example.

    Ask gnuplot to draw the plot in an image and save it in a PNG image file by using the commands set terminal pngcairo; and give the filename of the output with the set output "plot.png" command. Then embed the png image into the html file. You can alternately draw the plot to an SVG file (vector graphics), either as a separate file or embedded in the HTML; or even plain text output.