<p>There are many visualization libraries across languages and desktop application, and I am wondering what are pros and cons for each from speed of development and capability. I've done benchmark and compare each categories which are representative for a certain bucketing.</p><p><br></p><p>For this comparison, we are making an assumption for followings;</p><ul><li>From BI application, Power BI is picked up as a representative (ie. Tableau)</li><li>Any non-interactive libraries from R and Python are excluded (ie ggplot, matplotlib)</li><li>Plotly is picked up as a web-based interactive graphing (ie eChart, highchart.js)</li><li>Do quantitative comparison, using good, poor, or not capable from easiness and speed of visualizaton</li></ul><p><br></p><table class="table table-bordered"><tbody><tr><td>Attributes</td><td>d3.js</td><td><p>Plotly Dash</p></td><td>Power BI</td></tr><tr><td>Coding Language</td><td>Java Script</td><td>Python, Java Script, R</td><td>NA</td></tr><tr><td>Rendering Speed</td><td>Good</td><td>Good</td><td>Poor</td></tr><tr><td>Data Type</td><td>JSON</td><td>Tabular</td><td>Tabular</td></tr><tr><td>Basic chart</td><td>Poor (Slow)</td><td>Good</td><td>Good (Faster)</td></tr><tr><td>Waterfall Chart</td><td>Poor (Slow)</td><td>Good</td><td>Good (Faster)</td></tr><tr><td>Parallel Coordinate</td><td>Poor (Slow)</td><td>Good (Fast)</td><td>Not Capable</td></tr><tr><td>Hierarchical Treemap</td><td>Poor (Slow)</td><td>Good (Fast)</td><td>Not Capable</td></tr><tr><td>Pivot Function</td><td>Poor (with jquery, Slower)</td><td>Poor (Slow)</td><td>Good (Faster)</td></tr><tr><td>Heatmap</td><td>Poor (Slow)</td><td>Good (Faster)</td><td><p>Not Capable</p></td></tr><tr><td>Hierarchical Bar</td><td>Good</td><td>Not Capable</td><td>Not Capable</td></tr><tr><td>Cross interaction</td><td>Good</td><td>Poor</td><td>Good (limited)</td></tr><tr><td>Taylor made visualization (ie decision threshold)</td><td>Good</td><td>Not Capable</td><td>Not Capable</td></tr></tbody></table><p><br></p><p>Based on a benchmark above, below is my summary impression;</p><p><br></p><h4>Power BI</h4><p>Overall Power BI gives us faster development throughput but limited capability. If we know graphs to use which is basic hence under options and data is stored as tabular format, Power BI is the one to use. Meanwhile if the visualization requires something unique, or taylor made to embed to system/presentation, we should use something else. Also, rendering speed would be slower than others so it would not be best for exploretory data analysis unless data size is small enough</p><p><br></p><h4>Plotly Dash</h4><p>Plotly dash is web framework where we could use plotly, this is easier to integrate to simple web application. Also dash is offered to multi language platform that is another strength. Among the benchmark, plotly is best balanced application. So if you are not sure the data type or output visualization type, plotly would be the one to use. Hence this is also best for exploretory data analysis with the combination with data wrangling by coding languages such as python and R.</p><p><br></p><h4>D3.js</h4><p>d3 is capable for anything visualization you can come up, meanwhile development takes too much time as it requires bottoms up coding. It typically needs 100-200 lines of code just to render basic chart, while plotly just requires -100 lines of code. So definitely this is not suitable for exploretory data analysis, but if the requirement is something unique interaction/interpretation and that also requires taylor made visual development, this is where d3.js shines. By using d3.js, we could create most beautiful graph, but it requires decent understanding of d3 and java script, and it's time consuming, while plotly and power BI offers good visualization by default. It would take time to learn to get similar level of graphing of what Power BI and Plotly offers, and would take further time to exceeds those visualizations, but you would for sure like the final outcome from d3.js</p>
<< Back to Blog Posts
Back to Home