What is App::ffeedflotr?
How is App::ffeedflotr useful?
How does App::ffeedflotr work?
What does App::ffeedflotr need?
Max Maischein
Frankfurt.pm
DZ BANK Frankfurt
Deutsche Zentralgenossenschaftsbank
Information management
App::ffeedflotr is a command line program
that reads data from STDIN
and visualizes it in Firefox.
App::ffeedflotr?... if that image is readily available!
... for the data you have!
App::ffeedflotr?Numbers and totals available online
Debug output of programs
Online example:
Statistics of CPAN Tester reports
Online as text file (http://stats.cpantesters.org/mreports.html)
Online example:
Statistics of CPAN Tester reports
Online as text file (http://stats.cpantesters.org/mreports.html)
1: YYYYMM,testers,total,pass,fail 2: 3: 199508,31,0,0,0 4: 199509,15,0,0,0 5: 201101,2008,333157,289881,27773 6: 201102,2009,409904,351975,31752 7: 201103,1908,387248,338211,27300
1: perl -aF=, -nle "splice@F,2,2;print qq(@F)" 2: | perl -w bin\ffeedflotr.pl 3: --time 4: --xlen 20 5: --color 1=green --color 2=red 6: --legend 1=Pass --legend 2=Fail 7: stats1.txt
ffeedflotr reads STDIN and writes to Firefox
ffeedflotr reads STDIN and writes to Firefox
1: > perl -w bin\ffeedflotr.pl --title test 2: 1 1 3: 2 4 4: 3 9 5: 4 16 6: ^D
Also infinite data streams
1: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
Also infinite data streams
1: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
2: 0 7.31170654296875
Also infinite data streams
1: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
2: 0 7.31170654296875
3: 1 1.4410400390625
Also infinite data streams
1: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
2: 0 7.31170654296875
3: 1 1.4410400390625
4: 2 1.35223388671875
Also infinite data streams
1: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
2: 0 7.31170654296875
3: 1 1.4410400390625
4: 2 1.35223388671875
5:
6: > perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
7: | perl -w bin\ffeedflotr.pl
8: --stream
9: --title test
1: perl -wle "$|++;while(1){print( $i++,' ',rand(10));sleep 1}"
2: | perl -w bin\ffeedflotr.pl
3: --stream
4: --title test
Live Demo!
Line chart
Stacked line chart / Area chart
Pie chart
Scatterplot ( X / Y Chart )
Procedural Map Generation
Procedural Map Generation
Random dots
Radius of 10 units around every dot
Random::PoissonDisc
Procedural Map Generation
Random dots
Radius of 10 units around every dot
Random::PoissonDisc
Output:
1: > perl -w rdp-test.pl 2: 3: 24.4129655649886 24.416205030866 4: 28.538216147295 36.9806667873347 5: 36.3469658463998 31.3267757436954 6: ...
Radius of 10 units around every dot?
Output:
1: > perl -w rdp-test.pl 2: 3: 24.4129655649886 24.416205030866 4: 28.538216147295 36.9806667873347 5: 36.3469658463998 31.3267757436954 6: ...
Radius of 10 units around every dot?
Output:
1: > perl -w rdp-test.pl 2: 3: 24.4129655649886 24.416205030866 4: 28.538216147295 36.9806667873347 5: 36.3469658463998 31.3267757436954 6: ... 7: 8: > perl -w rdp-test.pl | perl -w bin\ffeedflotr.pl 9: --type=scatter
Radius of 10 units around every dot?
Output:
1: > perl -w rdp-test.pl | perl -w bin\ffeedflotr.pl 2: --type=scatter
Debug it
Good
1: > perl -w rdp-test.pl | perl -w bin\ffeedflotr.pl 2: --type=scatter
Bad
1: > perl -w rdp-test.pl | perl -w bin\ffeedflotr.pl 2: --type=scatter
Good
1: > perl -w rdp-test.pl | perl -w bin\ffeedflotr.pl 2: --type=scatter
App::ffeedflotr work?App::ffeedflotr work?
Portrait of Buffalo Bob Smith and Howdy Doody: Fort Lauderdale, Florida
Flickr++
App::ffeedflotr work?
Portrait of Buffalo Bob Smith and Howdy Doody: Fort Lauderdale, Florida
App::ffeedflotr work?
Portrait of Buffalo Bob Smith and Howdy Doody: Fort Lauderdale, Florida
App::ffeedflotr work?
Portrait of Buffalo Bob Smith and Howdy Doody: Fort Lauderdale, Florida
App::ffeedflotr work?
Create Firefox tab (WWW::Mechanize::Firefox)
Load flot.js into tab
Read input data
Transmit data to Firefox
App::ffeedflotr work?
Create Firefox tab (WWW::Mechanize::Firefox)
Load flot.js into tab
Read input data
Transmit data to Firefox
App::ffeedflotr work?
Create Firefox tab (WWW::Mechanize::Firefox)
Load flot.js into tab
Read input data
Transmit data to Firefox
Plot data with calls to flot.js
A better name!
A module API!
More use cases than just mine
Plot algorithm for IP addresses (Koch dragon curve / XKCD?)
http://github.com/Corion/App-ffeedflotr
The sample code is available in the Github repo
If I get a good name for the module/app, the code will also be released onto CPAN
App::ffeedflotr
http://github.com/Corion/App-ffeedflotr
The sample code is available in the Github repo
If I get a good name for the module/app, the code will also be released onto CPAN
App::ffeedflotr
Max Maischein ( corion@cpan.org )
Time series
Legends
Line Colors
Axis values
Background image
Graphviz - for non-metric data
GD - for raw plotting