<html>
<head>
<meta name="description" content="Grouped Bars On Separate Axes" />
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.0.0.min.js"></script>
</head>
<body>
</body>
</html>
var svg = dimple.newSvg("body", 800, 600);
// Data for the left axis
var data1 = [
{ "Day":"Monday", "Measure":"A", "Value":2000000 },
{ "Day":"Tuesday", "Measure":"A", "Value":3000000 },
{ "Day":"Wednesday", "Measure":"A", "Value":4000000},
{ "Day":"Thursday", "Measure":"A", "Value":4000000 },
{ "Day":"Friday", "Measure":"A", "Value":3000000 },
{ "Day":"Saturday", "Measure":"A", "Value":2000000 },
{ "Day":"Sunday", "Measure":"A", "Value":1000000 },
// Hacky line to force data above into the first column
{ "Day":"Sunday", "Measure":"B", "Value":0 }
];
// Data for the right axis
var data2 = [
// Hacky line to force data below into the second column
{ "Day":"Monday", "Measure":"A", "Value":0 },
{ "Day":"Monday", "Measure":"B", "Value":2000 },
{ "Day":"Tuesday", "Measure":"B", "Value":300 },
{ "Day":"Wednesday", "Measure":"B", "Value":400},
{ "Day":"Thursday", "Measure":"B", "Value":400 },
{ "Day":"Friday", "Measure":"B", "Value":300 },
{ "Day":"Saturday", "Measure":"B", "Value":200 },
{ "Day":"Sunday", "Measure":"B", "Value":100 }
];
// Create the chart without data
var chart = new dimple.chart(svg);
// Create the days on x with measures nested inside
var x1 = chart.addCategoryAxis("x", ["Day", "Measure"]);
x1.addOrderRule([
"Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"]);
// Add 2 y axes with titles matching the measure column
var y1 = chart.addMeasureAxis("y", "Value");
y1.title = "A";
var y2 = chart.addMeasureAxis("y", "Value");
y2.title = "B";
// Create the first series mapped to the left hand side
var s1 = chart.addSeries("Measure", dimple.plot.bar, [x1, y1]);
s1.data = data1;
// Create the second series mapped to the right hand side
var s2 = chart.addSeries("Measure", dimple.plot.bar, [x1, y2]);
s2.data = data2;
// Draw the chart with bounce for no good reason
chart.staggerDraw = true;
chart.ease = "bounce";
chart.draw(1000);
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |