Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
203 changes: 104 additions & 99 deletions charts/chart-boilerplate.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>

Expand Down Expand Up @@ -45,16 +46,24 @@
.chart {
flex: 6;
min-height: 4rem;
overflow: scroll;
}

@media (max-width: 48em) {
.wrapper {
flex-direction: column;
}
}
.area {
.bar.positive {
fill: steelblue;
clip-path: url(#clip);
}

.bar.negative {
fill: brown;
}

.axis text {
font: 10px sans-serif;
}

.axis path,
Expand All @@ -64,11 +73,6 @@
shape-rendering: crispEdges;
}

.brush .extent {
stroke: #fff;
fill-opacity: .125;
shape-rendering: crispEdges;
}
</style>

</head>
Expand All @@ -80,7 +84,6 @@ <h1>Chart Experiment Boilerplate</h1>
</div>
<div class="wrapper">
<div class="chart" id="chart">
<svg id="charts" width="100%" height="100%" viewBox="0 0 640 480"></svg>
</div>
<div class="sidebar" id="sidebar">
<h2>Metadata</h2>
Expand All @@ -92,10 +95,12 @@ <h2>Metadata</h2>
<script src="../bower_components/underscore/underscore.js"></script>
<script src="../bower_components/d3/d3.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="../bower_components/d3-tip/index.js"></script>

<!-- makes global billDetails var -->
<script src="../data/bill-details.js"></script>
<script src="./sp500.csv"></script>

<script src="../data/votes_month.json"></script>

<!-- makes global billSubjects var -->
<script src="../data/bill-subjects.js"></script>
Expand All @@ -116,110 +121,110 @@ <h2>Metadata</h2>

function init () {

var margin = {top: 10, right: 10, bottom: 100, left: 40},
margin2 = {top: 430, right: 10, bottom: 20, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom,
height2 = 500 - margin2.top - margin2.bottom;

var parseDate = d3.time.format("%b %Y").parse;

var x = d3.time.scale().range([0, width]),
x2 = d3.time.scale().range([0, width]),
y = d3.scale.linear().range([height, 0]),
y2 = d3.scale.linear().range([height2, 0]);

var xAxis = d3.svg.axis().scale(x).orient("bottom"),
xAxis2 = d3.svg.axis().scale(x2).orient("bottom"),
yAxis = d3.svg.axis().scale(y).orient("left");

var brush = d3.svg.brush()
.x(x2)
.on("brush", brushed);

var area = d3.svg.area()
.interpolate("monotone")
.x(function(d) { return x(d.date); })
.y0(height)
.y1(function(d) { return y(d.price); });

var area2 = d3.svg.area()
.interpolate("monotone")
.x(function(d) { return x2(d.date); })
.y0(height2)
.y1(function(d) { return y2(d.price); });

var svg = d3.select("#charts").append("svg")
.attr("width", $( "#charts" ).width())
.attr("height", $( "#charts" ).width());

svg.append("defs").append("clipPath")
.attr("id", "clip")
.append("rect")
.attr("width", width)
.attr("height", height);

var focus = svg.append("g")
.attr("class", "focus")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var tip = d3.tip().attr('class', 'd3-tip').offset([-10, 0]).html (function(d) {return '<span>' + d.description + '</span>';});

var parseDate = d3.time.format("%Y-%m-%dT%H:%M:%SZ").parse;

var context = svg.append("g")
.attr("class", "context")
.attr("transform", "translate(" + margin2.left + "," + margin2.top + ")");
var parseDate2 = d3.time.format("%Y-%m-%d").parse;

d3.csv("./sp500.csv", type, function(error, data) {
x.domain(d3.extent(data.map(function(d) { return d.date; })));
y.domain([0, d3.max(data.map(function(d) { return d.price; }))]);
x2.domain(x.domain());
y2.domain(y.domain());
var margin = {top: 30, right: 10, bottom: 10, left: 10},
width = $("#chart").width(),
height = 500 - margin.top - margin.bottom;


focus.append("path")
.datum(data)
.attr("class", "area")
.attr("d", area);
//Fix the scale
var x = d3.scale.linear()
.range([0, width])

focus.append("g")
var y = d3.scale.ordinal()
.rangeRoundBands([0, height], .4);

var makePos = function (x) {
return Math.abs(x);
}

var xAxis = d3.svg.axis()
.scale(x)
.tickFormat(makePos)
.orient("top");

var svg = d3.select("#chart").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");

var data;
var dataFix;



d3.json("../data/votes_month.json", function(error, json) {
data = json.results.votes;

dataFix = data.reduce( function (acc, vote) {
return acc.concat([
{
yes: vote.democratic.yes * -1,
vote: vote
},{
yes: vote.republican.yes * 1,
vote: vote
}
]);
}, [] );

x.domain(d3.extent(dataFix, function(d)
{
//d3.min(d.yes) or nothing
return (d.yes); }));
y.domain(data.map(function(d) {
return d.description; }));


var tip = d3.tip().attr('class', 'd3-tip').offset([-10, 0]).html (function(data) {
return data;});

svg.selectAll(".bar")
.data(dataFix)
.enter().append("rect")
.attr("class", function(d) {
return d.yes < 0 ? "bar negative" : "bar positive"; })
.attr("x", function(d) { return x(Math.min(0, d.yes)); })
.attr("y", function(d) {
return y(d.vote.description); })
.attr("width", function(d) { return Math.abs(x(d.yes) - x(0)); })
.attr("height", y.rangeBand());

svg.call(tip)
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);

focus.append("g")
svg.append("g")
.attr("class", "y axis")
.call(yAxis);

context.append("path")
.datum(data)
.attr("class", "area")
.attr("d", area2);
.append("line")
.attr("x1", x(0))
.attr("x2", x(0))
.attr("y2", height)
.on('mouseover', tip.show)
.on('mouseout', tip.hide);

context.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height2 + ")")
.call(xAxis2);

context.append("g")
.attr("class", "x brush")
.call(brush)
.selectAll("rect")
.attr("y", -6)
.attr("height", height2 + 7);
});

function brushed() {
x.domain(brush.empty() ? x2.domain() : brush.extent());
focus.select(".area").attr("d", area);
focus.select(".x.axis").call(xAxis);
}

function type(d) {
d.date = parseDate(d.date);
d.price = +d.price;
return d;
}
// code here.


/*
return data.reduce( function( acc, item) {
return acc.concat( item.results)
}, [])

data = data.reduce( function( acc, item) {
if (acc){
return acc.concat( item.results)
}
}, [])


chart = d3
.select( "#chart" )
Expand Down
124 changes: 0 additions & 124 deletions charts/sp500.csv

This file was deleted.