Dimple: An object-oriented API for business analytics powered by D3(dimplejs.org)
dimplejs.org
Dimple: An object-oriented API for business analytics powered by D3
http://dimplejs.org/
32 コメント
https://dc-js.github.io/dc.js/
Very slick. Wonder if this lib could speed development of custom visuals for an existing product like Power BI, which are also based on d3 (https://github.com/Microsoft/PowerBI-visuals).
+1 for DC. Built on Square's crossfilter library and reductio . it's an awesome way to do R-like analytics innthe browser.
I've said it before and I'll say it again, I'm always skeptical of any wrapper around D3 that tries to make it more reusable. D3 is built with reusability in mind, considering it uses functions and objects for everything. I wrote 300 lines of D3 that made a graph which has all the features we need, and no single D3 wrapper library could have provided all that functionality for us, nor could they be mixed together to provide it for us. That said, I enjoy seeing new ones come out because they usually offer new ideas for different ways to visualize data or interact with it.
You see these things because d3 is fairly low level. If I just have some data and want a bar chart, I basically want to pass the data to "BarChart", with some possible configuration options.
You can't do this with raw d3. With d3, you are responsible for drawing and spacing your bars, creating your axes, etc.
This is intentional, of course. d3 aims to give a set of building blocks that you can be used to create any possible visualization you can think of. It's not aiming to be a high-level graphing library with a limited set of pre-built graphs. But those libraries fill a perfectly valid need as well.
You can't do this with raw d3. With d3, you are responsible for drawing and spacing your bars, creating your axes, etc.
This is intentional, of course. d3 aims to give a set of building blocks that you can be used to create any possible visualization you can think of. It's not aiming to be a high-level graphing library with a limited set of pre-built graphs. But those libraries fill a perfectly valid need as well.
Basically this - we opted for google charts rather than d3 for a few projects because we wanted to keep the investment low and essentially all we wanted was barChart() pieChart() methods that we pass data into. Yes we could have built it once and reused but the uglier google chart was already there.
That's a good point, and in fact I may look into Google Charts once more. Thanks for the perspective.
At times I'm skeptical of D3 as a wrapper around fundamental JavaScript functions. Sometimes it's simpler just to build your own damn <path> objects than it is to try and finesse D3 into building the object(s) where and how you want.
D3 does provide quite a lot of out of the box. But if you find yourself outside that box it might be worth doing it yourself.
D3 does provide quite a lot of out of the box. But if you find yourself outside that box it might be worth doing it yourself.
I recently built a simple site using Vincent, which is a Python visualization library using D3 & Vega. Generating the graph was only a dozen lines of code or so for me. Sometimes you don't need the full power of the underlying library, you just want to get something up and running quickly for a prototype. There's always a tradeoff of control when going to a higher abstraction layer.
https://github.com/wrobstory/vincent
https://github.com/wrobstory/vincent
As someone who has also played around with d3 to create hand cranked charts, which you can see here http://bitcointicker.co/bitstamp/ ..... (it can be quite tedious)
I fully appreciate nvd3, which can be used to quickly make pretty charts like these http://charts.bitcointicker.co/
I fully appreciate nvd3, which can be used to quickly make pretty charts like these http://charts.bitcointicker.co/
What is business analytics?
I'm glad I'm not the only one that is confused.
Is it just making graphs about performance?
Is it just making graphs about performance?
More or less, yes. Past, present and future performance of various business variables.
It is amazing to me how many industries have similar problems that can be simply abstracted and applied to a larger scope.
We have profiling, they have "business variable monitoring." I love how the same program solves both problems, just needs a repackage.
We have profiling, they have "business variable monitoring." I love how the same program solves both problems, just needs a repackage.
One key difference that makes business variables more complex to track are the people involved. You need to connect all theses numbers back to individuals and teams that don't stay put. Additionally you should probably be comparing it to ever changing quotas. These aspects come with specific expectations regarding visuals and options available for reporting.
Business analytics is a nebulous term for a wide variety of activities. But for the purposes of this API, "business analytics" means bar charts, pie charts and scatterplots and variants thereof.
Hm... That's nice and all, but why this particular technology stack? How do you typically use internal business data? Is javascript really the best language for mucking about with large datasets?
There is nothing wrong with building abstractions though. In the end, they will need to be complex too, to be generic enough. I am not sure I like the model though, especially when looking at the advanced examples - it looked like there was a lot of imperative coding going on.
An alternative is using R for analysis work. I think that the hard part is typically getting the data and getting it into shape for plotting. Having done that I am a few lines of code from generating nice charts with ggplot2.
As an example, I have some small scripts that I run (myself or by jenkins) on a somewhat regular basis. They generate and update a bunch of static images attached to Confluence pages, using some loaders in java and analysis and render in R.
They images look extra nice with theme_xkcd :-)
There is nothing wrong with building abstractions though. In the end, they will need to be complex too, to be generic enough. I am not sure I like the model though, especially when looking at the advanced examples - it looked like there was a lot of imperative coding going on.
An alternative is using R for analysis work. I think that the hard part is typically getting the data and getting it into shape for plotting. Having done that I am a few lines of code from generating nice charts with ggplot2.
As an example, I have some small scripts that I run (myself or by jenkins) on a somewhat regular basis. They generate and update a bunch of static images attached to Confluence pages, using some loaders in java and analysis and render in R.
They images look extra nice with theme_xkcd :-)
With R, you won't be able to create interactive graphics that other people can explore on a web page, for example. If you need that, I don't think you can avoid javascript.
While it's true that there needs to be some js involved, the analyst doesn't have to write it. You could use an R package (like https://rstudio.github.io/leaflet/) which wraps around an javascript library, so that you can stay within R.
Shiny does just that:
http://shiny.rstudio.com
[deleted]
Nice, but when is somebody going to create an easy way to build advanced dashboards on the fly for non coders? That's how Tableau is making a dent on Ms Excel market share right now.
another e.g http://www.infocaptor.com (everything in browser)
Love the way it drops lines on axes when you hover over the point :-)
plotly.js
Ah. Yes.
That is also an alternative. Can plot directly to plotly from R too :-)
In my case, I can't send sensitive data around - it might even be illegal, and did not want to shell out a large sum of money for my own personal instance, but for non sensitive stuff or when it's worth the money it seems to be the bees knees!
That is also an alternative. Can plot directly to plotly from R too :-)
In my case, I can't send sensitive data around - it might even be illegal, and did not want to shell out a large sum of money for my own personal instance, but for non sensitive stuff or when it's worth the money it seems to be the bees knees!
plotly.js is the MIT licenced[1] charting library released by Plotly, which you can use to create plots without shipping data to anyone else.
It can be used from R (IIRC), since the corresponding Plotly library just generates a declarative JSON plot description, which plotly.js can use.
[1]: https://github.com/plotly/plotly.js/blob/master/LICENSE
It can be used from R (IIRC), since the corresponding Plotly library just generates a declarative JSON plot description, which plotly.js can use.
[1]: https://github.com/plotly/plotly.js/blob/master/LICENSE
Plottable was the easiest and most flexible for me to use.
"Fork me on github" leads to a 404 page.