Sankey diagrams are a neat way to display, e.g., heat and energy fluxes. With [login to view URL], there exists a library to easily create such visualizations [1].
The objective of this project is to bring Sankey diagrams to the web and make them interactive. The library mpld3 [2] can be used to turn the matplotlib diagrams into d3js (svg) graphics.
We have tested mpld3 with sankey diagrams and it works out of the box, see attachment. There are, however, some aspects that are not optimal and should be improved / investigated within this project.
Scope:
- Setup a simple Python webserver that makes available the sankey diagram given in [1] via [2]. Use whatever framework you prefer, the simpler the better (why not bottle? [3]).
- Draw the Sankey diagram on a website and add input fields for the 19 different fluxes; prepopulate the fields with the values given on the script
- If the fields are changed and a "redraw" button is pressed, the Sankey diagram is updated
- Optimize the look and feel:
- Remove axes lines
- Optimize font size as well as font weight (original diagram from [1] has some text written in bold face)
- The Sankey diagram should use the full width of the browser window. If the browser windows is resized, however, the diagram should be redrawn. The font size should not change if the user zooms
References:
[1] [login to view URL]
[2] [login to view URL]
[3] [login to view URL]
Hi, Matt here and since I'm bidding on your other project (heatmaps) only few paragraphs are below.
I understand all the requirements (with the setup, excluded from points below):
1. Added input fields for fluxes, filled (prepopulated) with values from the input script.
2. Auto redraw the layout if the "Redraw" button is pressed.
3. Axes lines removed.
4. Styling font size and weights.
5. Redrawing diagram on resize (browser) event.
6. Zooming keeps the text size (so selective zoom in D3.js, tricky yet can be done using classes). UPDATE: This is optional yet best effort will be used since zooming the whole diagram affects text sizes.
Looking forward to your reply. Partial milestones can be added.
Matt
$390 USD in 10 days
4.8 (49 reviews)
6.0
6.0
5 freelancers are bidding on average $632 USD for this job
Hello! We are a team of Python/PHP/JS/MySQL experts. Reliable and creative. We are good with linux environment. We see the project rather clear: install bottle or django framework, make some predefined pages with inputs for custom parameters, then put some inner pages which will render diagrams, and call them through ajax with given params. We think we can use just basic jQuery stuff for determining redrawing events.
Do you need any login area, CMS or anything else except diagrams calculators?
We will be happy to help you. We are ready to start today! Regards