d3/examples/calendar/dji-area.html

121 строка
2.5 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>DJI</title>
<script type="text/javascript" src="../../d3.js"></script>
<script type="text/javascript" src="../../d3.csv.js"></script>
<script type="text/javascript" src="../../d3.time.js"></script>
<style type="text/css">
body {
font: 10px sans-serif;
}
rect {
fill: #ddd;
}
path.area {
fill: #000;
fill-opacity: .75;
}
.axis, .grid {
shape-rendering: crispEdges;
}
.grid line {
stroke: #fff;
}
.grid line.minor {
stroke-opacity: .5;
}
.grid text {
display: none;
}
.axis line {
stroke: #000;
}
.grid path, .axis path {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
var m = [10, 50, 20, 10],
w = 960 - m[1] - m[3],
h = 500 - m[0] - m[2],
parse = d3.time.format("%Y-%m-%d").parse;
// Scales. Note the inverted domain for the y-scale: bigger is up!
var x = d3.time.scale().range([20, w - 20]),
y = d3.scale.linear().range([h - 20, 20]);
// Axes.
var xAxis = d3.svg.axis().scale(x).orient("bottom"),
yAxis = d3.svg.axis().scale(y).orient("right");
// An area generator.
var area = d3.svg.area()
.x(function(d) { return x(d.Date); })
.y0(y(0))
.y1(function(d) { return y(d.Close); });
var svg = d3.select("body").append("svg")
.attr("width", w + m[1] + m[3])
.attr("height", h + m[0] + m[2])
.append("g")
.attr("transform", "translate(" + m[3] + "," + m[0] + ")");
svg.append("rect")
.attr("width", w)
.attr("height", h);
d3.csv("dji.csv", function(data) {
// Parse dates and numbers.
data.reverse().forEach(function(d) {
d.Date = parse(d.Date);
d.Close = +d.Close;
});
// Compute the minimum and maximum date, and the maximum price.
x.domain([data[0].Date, data[data.length - 1].Date]);
y.domain([0, d3.max(data, function(d) { return d.Close; })]);
svg.append("g")
.attr("class", "x grid")
.attr("transform", "translate(0," + h + ")")
.call(xAxis.tickSubdivide(1).tickSize(-h));
svg.append("g")
.attr("class", "y grid")
.attr("transform", "translate(" + w + ",0)")
.call(yAxis.tickSubdivide(1).tickSize(-w));
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + h + ")")
.call(xAxis.tickSubdivide(0).tickSize(6));
svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + w + ",0)")
.call(yAxis.tickSubdivide(0).tickSize(6));
svg.append("path")
.attr("class", "area")
.attr("d", area(data));
});
</script>
</body>
</html>