D3.js: How to handle dynamic JSON Data
pothibo.com
pothibo.com
http://chimera.labs.oreilly.com/books/1230000000345/index.ht...
If I could recommend a way to learn d3.js:
1. Read Scott's book (and code the examples).
2. Think of some simple charts you want to make (and code them).
3. Use #d3.js@freenode, Stack Overflow, and see if some of the articles at http://www.d3noob.org/ fit what you're trying to do.
4. Go to http://bl.ocks.org/mbostock, be inspired, fork the code, and apply it to your own idea.
Repeat #3.
Ideally, find some kind of community where you can discuss with and help each other out regularly, but I don't really know of such a place, and it can be hard to find someone to do this with physically outside Paris, Berlin, NYC, and SF.
This is my favorite getting started on d3 tutorial: http://www.jeromecukier.net/blog/2013/03/05/d3-tutorial-at-s...
If someone considers writing a d3.js tutorial, I'd urge them to use a real example, since this is where people realize they should use features like line.defined(), figure out how to implement gridlines yourself, and so on.
As great as d3.js, it's really hard to dive into the official wiki/docs as well as hit them for help.
I've made lots of stuff with d3 and never needed grid lines or dealt with undefined line values, so my 'getting your hands dirty' tutorial would probably deal with totally different issues than what would be useful for you. At a certain point, you just have to buckle down and read the documentation - a quick peak at the page for svg.axis shows how to get grid lines extremely easily (http://bl.ocks.org/mbostock/4323929).
Hanging out on the stackoverflow tag is also super helpful. I either know how to answer a question and get some internet points or Lars responds within an hour and I learn something new.
Do you have some data you want to visualize in an interactive way? Maybe try D3.js
Do you want to make 3d models or video games? THREE.js
Do you want to do custom 2D drawings that aren't suited to the previous two? Maybe raw canvas is for you.
D3.js was a major focus of the course, and lectures from previous years are published for free, as well. It was really well structured.
That it is free is a huge act of generosity.
https://github.com/mbostock/d3/wiki/Tutorials
Especially, the first four: Introduction, Three Little Circles, Thinking with Joins, How Selections Work.
These articles explain the basic concepts of d3.
Then learn by doing is the best way to go. For example, http://vida.io/explore
> SVG has an opposite y-coordinate system (0 is on top, height() is at the bottom).
struck me as silly, since that's how the coordinate systems of nearly all computer graphics systems work, not really opposite....
Anyone who has done any amount of work with computer graphics knows that this is the norm; but a new programmer, or just one that hasn't worked with graphics, has 6+ years of math education telling them that the y-axis is backwards.
A little demo is in the repo too: http://rawgithub.com/beefsack/angular-d3/master/example/inde...
Everything looks functional until you dig in the source and realize that you are actually manipulating objects.
Also:
When you show the JSONdata object on the page, you've switched your </code> and </pre> closing tags.
and
By reading through the code examples, it seems like you don't add the circles' click handler and cursor style until the Outside the current (domain) section, when it's really been there since the first example. That's a little confusing.
Well this was a sneaky bug: There's an extra space at the end of the date in JSONData's last 2 elements(in the example and in the real code). This is why the last two were generating garbage value.
Wordpress is a real pain to work with when using code and it seems I introduced a bug when copying code over. It's going to be fixed shortly. As for the </code></pre>. Typo, my bad.
Regarding the CSS, I believe all the graphs behave the same way. Could you verify? I also can be reached @pothibo on twitter for further discussion ;)
I really appreciate your feedback.
(Edit: Gave the reason why the graph was only representing 3 data point instead of 5)
Thanks for that - my d3 understanding is tenuous, and I thought that it might have been even worse than I thought:)
>Regarding the CSS, I believe all the graphs behave the same way. Could you verify?
Not actually the css, but
circles.enter()
.append("svg:circle")
.attr("style", "cursor: pointer;")
.on("click", function(d) {d3.select("#demoAddRandom .value").text("Date: " + d.created_at + " amount: " + d.amount)
All the graphs do behave the same way, but that code isn't introduced in the examples until the first time you refactor refreshGraph. It's always there in the actual code of the graphs.Wordpress is a real mess when dealing with code & text. Everything is part of the same big textarea and because there's no code highlighting, I have to read everything again and again and again.
Should be fixed now. Thanks!