• Coding
  • Suggestions for visual data representation

Context

A big part of my job consists of overviewing and administrating our nightly batches. I'm interested in creating a reporting tool where other (less techie) members of the team will be able to visualize the execution times and statistics of all our batches.


Problem

Every morning I recieve a CSV file containing statistics on the execution of the jobs. Here's the CSV header:
JobID; JobName; StartTime; EndTime; ExitStatus;
Parsing this with Python is extremely easy, and I was able to build a Model around the data fairly easily. I also store data daily in a DB in order to present periodical statistics.

Now I want to create a webapp that would visually display the execution times of a given day. Brace yourselves, here comes the ascii artist in me:
http://my.server.domain/20120119

08----09----10----11----00----01----02----03----04----05----06----07----08
|
|   ##>(job1)
|        #####>(job2)
|                                  ############> (job3)
In this case, we can see that:

* job1 executed from 8:30pm to 9pm.
* job2 executed from 9pm to 10:30pm.
* job3 executed from 00am to 3am.

Despite my obvious talent for Ascii goodness, I'm not sure it's very useful in a corporate context. I want to generate images (jpeg?png?gif?) representing the same.

Question

What are the existing tools/modules/libraries/APIs/frameworks would you suggest I use? Did you have any real life experience with something similar?

I prefer Python, but I'm flexible about languages. Here's the list of technologies my employer allows on his machines:

- Java (<= 1.6.x)
- Python (<= 2.7.x)
- Perl (<= 5.8.8)
- C++
- ksh or bash
The most obvious question, does the consumer system have access to the internet? if so, the simplest would be using google charts.

Else, you might look into dot, though i'm not sure it'll handle your case.
Honestly the better question you have to ask the end user is, what is objective of this report?
identify who is late?
see who is absent?
etc....
There is absolutely no way I'm allowed to export the data to Google :-/
and I'm currently looking into dot, hoping there's something more elegant to use.
No PHP? Dang.
Anyway if you can generate HTML, it's pretty easy. Just calculate the position of the box and it's size in pixels from the given data. You could even do it in javascript that is have javascript parse the CSV and generate the proper HTML.
rolf wroteNo PHP? Dang.
Anyway if you can generate HTML, it's pretty easy. Just calculate the position of the box and it's size in pixels from the given data. You could even do it in javascript that is have javascript parse the CSV and generate the proper HTML.
That is very limiting, one off implementation that needs a lot of efforts to change or expand. Reusing existing libs is a better approach.
Looks incredibly heavy though for such a small task, unless of course rahmu's requirements fit.
From the website you gave:
Graphite requires:

python2.4 or greater
pycairo (with PNG backend support)
mod_python
django
python-ldap (optional - needed for ldap-based webapp authentication)
python-memcached (optional - needed for webapp caching, big performance boost)
python-sqlite2 (optional - a django-supported database module is required)
bitmap and bitmap-fonts required on some systems, notably Red Hat
This is enormous!! I'd rather have something smaller.
Nice blog article!