6 ms·
Dimple: An object-oriented API for business analytics powered by D3
- sdegutis 11y agoI'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.
- jonahx 11y agoYou 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.
- IE6 11y agoBasically 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.
- sdegutis 11y agoThat's a good point, and in fact I may look into Google Charts once more. Thanks for the perspective.
- forrestthewoods 11y agoAt 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.
- keypusher 11y agoI 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
- bitcointicker 11y agoAs someone who has also played around with d3 to create hand cranked charts, which you can see here http://bitcointicker.co/bitstamp/ 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/ http://charts.bitcointicker.co/
- rambos 11y agoplotly.js
- kpil 11y agoAh. 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!
- tekacs 11y agoplotly.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 https://github.com/plotly/plotly.js/blob/master/LICENSE
- trengrj 11y agoWhat is business analytics?
- gravypod 11y agoI'm glad I'm not the only one that is confused. Is it just making graphs about performance?
- confluence 11y agoMore or less, yes. Past, present and future performance of various business variables.
- gravypod 11y agoIt 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.
- vyrotek 11y agoOne 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.
- crispyambulance 11y agoBusiness 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.
- kpil 11y agoHm... 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 :-)
- deleted 11y ago[deleted]
- jonahx 11y agoWith 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.
- hadley 11y agoWhile 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/ https://rstudio.github.io/leaflet/) which wraps around an javascript library, so that you can stay within R.
- chrisweekly 11y agoShiny does just that: http://shiny.rstudio.com http://shiny.rstudio.com
- jonahx 11y agoWell, it just does the JS conversion for you. I guess you can call that avoiding JS...
- apatap 11y agohttps://dc-js.github.io/dc.js/ https://dc-js.github.io/dc.js/
- sandGorgon 11y ago+1 for DC. Built on Square's crossfilter library and reductio . it's an awesome way to do R-like analytics innthe browser.
- WhitneyLand 11y agoVery 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 https://github.com/Microsoft/PowerBI-visuals).
- jazoom 11y agoPlottable was the easiest and most flexible for me to use.
- JayeshSidhwani 11y agoLove the way it drops lines on axes when you hover over the point :-)
- kfk 11y agoNice, 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.
- sheldor 11y ago"Fork me on github" leads to a 404 page.