This will be very helpful for cases that uses large datasets...
I built visualization using dc.js, and working with large datasets was the biggest pain point for me.
http://adilmoujahid.com/posts/2016/08/interactive-data-visua...
We would love to know your - use case - number of data points - ops on data on serverside
You can mail us to eng@charts.com
To build the visualization in [1], I used 3 datasets in csv format from a kaggle competition [2], and I implemented the charts using dc.js and Leaflet.js. The charts were interactive and I could managed to filter the data even in the map.
The largest dataset was 284 MB, which was still ok and didn't crash my browser.
There were 2 drawbacks to my approach: 1- All the data was in the browser. If my data was bigger (~1GB), then it would crash my browser. 2- If I deploy the visualization to a server (for example AWS), then it would make the rendering extremely slowly as it has to download all the data to the browser...
[1] http://adilmoujahid.com/posts/2016/08/interactive-data-visua...
[2] https://www.kaggle.com/c/talkingdata-mobile-user-demographic...
https://github.com/jpmorganchase/perspective https://github.com/jpmorganchase/perspective/tree/master/exa...
WebAssembly is on our radar and is coming soon. But we just wanted to release a super early version of what we build so far.
Will figure out the effort and roadmap and then keep you updated on the plan.
I’m part of the Muze team at Charts.com. Over the years I’ve seen lots of people who struggle to find the perfect balance between low-level visualization kernel (like d3), or black-box configurable charts (HighCharts, FusionCharts).
So we decided to build Muze taking a data-first approach, where you load your data in an in-browser DataModel, run relational algebra enabled data operators to get the right subset of data, and then just pass to Muze engine, which automatically renders the best visualization for it.
Any changes to data (including application of data operations) automatically updates the visualization, without you having to do anything else.
Couple of added benefits are : - With other libraries, if you’ve to connect multiple charts (for cross-interactivity, drill-down etc.), you’ve to manually write the ‘glue’ code. With Muze, all charts rendered from the same DataModel are automatically connected (enabling cross-filtering).
- Muze allows faceting of data out of box with multi-grid layout.
- Composability of visualizations allow you to create any kind of cartesian visualization with Muze, without having to wait for the charting library vendor to release it as a ‘new chart type’
- Muze exposes Developer-first API for enabling interactivity and customizations. You can use the low-level API to create complex interaction
We’ve literally just launched this last month or so, so I’d love some feedback if you can spare the time.
Thanks for taking a look!
Website: https://www.charts.com/muze Github: https://github.com/chartshq/muze
This is the biggest pain point for me with most current solutions. Either development time is super fast (e.g., tableau, periscope) but going beyond 80% is difficult, or development time is much longer (e.g., d3 or apis thereof) but you get full customization and getting to 100% is straightforward. For me, there is certainly a need to develop an 80% solution fast, but I also am always wanting to then redo the whole thing with lower level solution. I would prefer that I can piggy back off the 80% solution to 100% in the same software. That's a huge win for me. Thanks for providing a solution to this end, will definitely play around with this.
In a perfect world, how would the charting in Periscope work? How would you want to go from getting 80% very fast, to going to 100%, in the same software?
Now, I'm not saying that directly applies to your problems, but there's good reason this is a saying.
Going from 80% to 100% will take as long or longer as going from 0 to 80, because the last 20% is all edge cases that are a nightmare to test and mentally exhausting to comprehend.
Sometimes, it's just never cost effective to go from 80 to 100, and it's best to just leave it as is, even if there is some manual work left over.
Am I missing something?
https://jsfiddle.net/adarshlilha/8n5a94j1/20/
Does this help?
Plotly seems like its just the charting/graphing layer. A common use case (and increasingly an expectation) is that a series of graphs on a single page be responsive and cross filterable. For instance, if you click on a single element on one chart, it should filter the related charts accordingly. Additionally, these filters should build on each other and the developer/analyst should be able to define that.
Really, you're now doing a form of data modelling and in the domain of BI, and Plotly isn't going to help you figure any of this out.
Tableau and Power BI have gotten traction by building products that not only include but prioritize this form of modelling. Once you define your data model, you get the multi dimensional charting for free.
The appeal to me of this library (not having done a thorough G2) is an open source alternative to those products that integrates charts and data modelling easily.
I'd recommend pointing out the Plotly features you'd like to improve and seeing if the Muze team has solutions/improvements.
- you feel you had hard time achieving with Plotly? - a feature you wanted is not supported by Plotly?
Offtopic question, apologies: Where and how one can create the start page animation ( the one in 3D , with the moving impulses and floating charts ) ?
I went through the tutorial and I have to say...oh man, this is amazing. Building a Tableau clone is now possible! I hope you guys don't go under because its going to take me a while, but I'm super excited!
Does this work on mobile? Also, when I click "Play" the chart takes atleast 1-2 seconds to render. Is that just your code running engine or does every visualizations have that lag?
The web framework fetches data, does some additional checking on data and schema, process visible code and render it. That is probably the reason you are seeing lag.
Also there are few areas where Muze performance needs to be improved. We are doing a release to address this soon.
Vega is descriptive version of d3. We find it hard for debugging and creating complex viz.
Vega-lite is concise and more intuitive version of vega though.
However Muze was created to start directly from data, creating layout, composable layers, automatic cross interaction and a robust interaction mental model. Muze is inspired from VegaLite-InfoVis and Snap together viz paper.
Codebase is being migrated to Polymer 2.0, and better documentation.
I do not see any reason why this could not work with your API. If interested, some concrete/simpler examples available from https://github.com/PolymerEl/multi-chart (also being ported / simplified; ETA next week)
The website could be a bit more responsive. The charts are overlapping if I make the browser narrower.
Will upload the docs for this soon.
Is that required, or is there some way to generate and display these without the iframe?
A number of the charts in the examples are cut off (height-wise). https://www.charts.com/muze/examples/view/heatmap for example (in Chrome 69). Seems fine in Firefox.
For the time being, you can click on the play button on top right corner of the code section.
Also what is the Reactjs story here ? We went down the "tabular views" journey a while back and eventually settled on react-virtualized which i think is the best of breed.
However, will make sure it gets tested with all linux dist before next release.
Are you looking for integration? > Also what is the Reactjs story here ?
However https://www.charts.com/muze/docs/composing-layers explains some part about muze's composability. And this is an example https://www.charts.com/muze/examples/view/composition-of-lay...
Apart from composable layers Muze has - tabular layout (visual crosstab) created from data facets https://www.charts.com/muze/examples/view/crosstab-chart - auto interactions https://www.charts.com/muze/examples/view/crossfiltering-wit... - Legend on any chart https://www.charts.com/muze/examples/view/gradient-legend
etc...
However, every operation does not support formula storing. Operation like joining, grouping creates new data.
We are updating the docs rapidly. All this info would be on the docs soon.
Muze is data-first. You start with data, apply any operations (if needed), then render. Muze automatically detects the right chart for that and then renders. Also Muze allows you to compose any kind of cartesian visualization, as it follows grammar of graphics.
So if I've to explain this in a spectrum, it goes like this:
d3 (very powerful, high learning curve, you can do anything) Muze (data-first, Grammar of graphics oriented, compose viz) FusionCharts (chart-first, lot of depth in configurations, but can't extend yourself for new chart types)
Hope this helps.
Example here: https://imgur.com/a/zd5Giom