Skip to content

Instantly share code, notes, and snippets.

@hnahak
Created February 22, 2016 04:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hnahak/dd060992df3ca88d101a to your computer and use it in GitHub Desktop.
Save hnahak/dd060992df3ca88d101a to your computer and use it in GitHub Desktop.
javascriptReporting
@import url(//fonts.googleapis.com/css?family=Open+Sans:400,700);
svg {
font: 14px 'Open Sans';
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.axis text {
fill: #000;
}
.axis .tick line {
stroke: rgba(0, 0, 0, 0.1);
}
.area {
stroke-width: 1;
}
.area.outer,
.legend .outer {
fill: rgba(230, 230, 255, 0.8);
stroke: rgba(216, 216, 255, 0.8);
}
.area.inner,
.legend .inner {
fill: rgba(127, 127, 255, 0.8);
stroke: rgba(96, 96, 255, 0.8);
}
.median-line,
.legend .median-line {
fill: none;
stroke: #000;
stroke-width: 3;
}
.legend .legend-bg {
fill: rgba(0, 0, 0, 0.5);
stroke: rgba(0, 0, 0, 0.5);
}
.marker.client .marker-bg,
.marker.client path {
fill: rgba(255, 127, 0, 0.8);
stroke: rgba(255, 127, 0, 0.8);
stroke-width: 3;
}
.marker.server .marker-bg,
.marker.server path {
fill: rgba(0, 153, 51, 0.8);
stroke: rgba(0, 153, 51, 0.8);
stroke-width: 3;
}
.marker path {
fill: none;
}
.legend text,
.marker text {
fill: #fff;
font-weight: bold;
}
.marker text {
text-anchor: middle;
}
function addAxesAndLegend (svg, xAxis, yAxis, margin, chartWidth, chartHeight) {
var legendWidth = 200,
legendHeight = 100;
// clipping to make sure nothing appears behind legend
svg.append('clipPath')
.attr('id', 'axes-clip')
.append('polygon')
.attr('points', (-margin.left) + ',' + (-margin.top) + ' ' +
(chartWidth - legendWidth - 1) + ',' + (-margin.top) + ' ' +
(chartWidth - legendWidth - 1) + ',' + legendHeight + ' ' +
(chartWidth + margin.right) + ',' + legendHeight + ' ' +
(chartWidth + margin.right) + ',' + (chartHeight + margin.bottom) + ' ' +
(-margin.left) + ',' + (chartHeight + margin.bottom));
var axes = svg.append('g')
.attr('clip-path', 'url(#axes-clip)');
axes.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + chartHeight + ')')
.call(xAxis);
axes.append('g')
.attr('class', 'y axis')
.call(yAxis)
.append('text')
.attr('transform', 'rotate(-90)')
.attr('y', 6)
.attr('dy', '.71em')
.style('text-anchor', 'end')
.text('Time (s)');
var legend = svg.append('g')
.attr('class', 'legend')
.attr('transform', 'translate(' + (chartWidth - legendWidth) + ', 0)');
legend.append('rect')
.attr('class', 'legend-bg')
.attr('width', legendWidth)
.attr('height', legendHeight);
legend.append('rect')
.attr('class', 'outer')
.attr('width', 75)
.attr('height', 20)
.attr('x', 10)
.attr('y', 10);
legend.append('text')
.attr('x', 115)
.attr('y', 25)
.text('5% - 95%');
legend.append('rect')
.attr('class', 'inner')
.attr('width', 75)
.attr('height', 20)
.attr('x', 10)
.attr('y', 40);
legend.append('text')
.attr('x', 115)
.attr('y', 55)
.text('25% - 75%');
legend.append('path')
.attr('class', 'median-line')
.attr('d', 'M10,80L85,80');
legend.append('text')
.attr('x', 115)
.attr('y', 85)
.text('Median');
}
function drawPaths (svg, data, x, y) {
var upperOuterArea = d3.svg.area()
.interpolate('basis')
.x (function (d) { return x(d.date) || 1; })
.y0(function (d) { return y(d.pct95); })
.y1(function (d) { return y(d.pct75); });
var upperInnerArea = d3.svg.area()
.interpolate('basis')
.x (function (d) { return x(d.date) || 1; })
.y0(function (d) { return y(d.pct75); })
.y1(function (d) { return y(d.pct50); });
var medianLine = d3.svg.line()
.interpolate('basis')
.x(function (d) { return x(d.date); })
.y(function (d) { return y(d.pct50); });
var lowerInnerArea = d3.svg.area()
.interpolate('basis')
.x (function (d) { return x(d.date) || 1; })
.y0(function (d) { return y(d.pct50); })
.y1(function (d) { return y(d.pct25); });
var lowerOuterArea = d3.svg.area()
.interpolate('basis')
.x (function (d) { return x(d.date) || 1; })
.y0(function (d) { return y(d.pct25); })
.y1(function (d) { return y(d.pct05); });
svg.datum(data);
svg.append('path')
.attr('class', 'area upper outer')
.attr('d', upperOuterArea)
.attr('clip-path', 'url(#rect-clip)');
svg.append('path')
.attr('class', 'area lower outer')
.attr('d', lowerOuterArea)
.attr('clip-path', 'url(#rect-clip)');
svg.append('path')
.attr('class', 'area upper inner')
.attr('d', upperInnerArea)
.attr('clip-path', 'url(#rect-clip)');
svg.append('path')
.attr('class', 'area lower inner')
.attr('d', lowerInnerArea)
.attr('clip-path', 'url(#rect-clip)');
svg.append('path')
.attr('class', 'median-line')
.attr('d', medianLine)
.attr('clip-path', 'url(#rect-clip)');
}
function addMarker (marker, svg, chartHeight, x) {
var radius = 32,
xPos = x(marker.date) - radius - 3,
yPosStart = chartHeight - radius - 3,
yPosEnd = (marker.type === 'Client' ? 80 : 160) + radius - 3;
var markerG = svg.append('g')
.attr('class', 'marker '+marker.type.toLowerCase())
.attr('transform', 'translate(' + xPos + ', ' + yPosStart + ')')
.attr('opacity', 0);
markerG.transition()
.duration(1000)
.attr('transform', 'translate(' + xPos + ', ' + yPosEnd + ')')
.attr('opacity', 1);
markerG.append('path')
.attr('d', 'M' + radius + ',' + (chartHeight-yPosStart) + 'L' + radius + ',' + (chartHeight-yPosStart))
.transition()
.duration(1000)
.attr('d', 'M' + radius + ',' + (chartHeight-yPosEnd) + 'L' + radius + ',' + (radius*2));
markerG.append('circle')
.attr('class', 'marker-bg')
.attr('cx', radius)
.attr('cy', radius)
.attr('r', radius);
markerG.append('text')
.attr('x', radius)
.attr('y', radius*0.9)
.text(marker.type);
markerG.append('text')
.attr('x', radius)
.attr('y', radius*1.5)
.text(marker.version);
}
function startTransitions (svg, chartWidth, chartHeight, rectClip, markers, x) {
rectClip.transition()
.duration(1000*markers.length)
.attr('width', chartWidth);
markers.forEach(function (marker, i) {
setTimeout(function () {
addMarker(marker, svg, chartHeight, x);
}, 1000 + 500*i);
});
}
function makeChart (data, markers) {
var svgWidth = 960,
svgHeight = 500,
margin = { top: 20, right: 20, bottom: 40, left: 40 },
chartWidth = svgWidth - margin.left - margin.right,
chartHeight = svgHeight - margin.top - margin.bottom;
var x = d3.time.scale().range([0, chartWidth])
.domain(d3.extent(data, function (d) { return d.date; })),
y = d3.scale.linear().range([chartHeight, 0])
.domain([0, d3.max(data, function (d) { return d.pct95; })]);
var xAxis = d3.svg.axis().scale(x).orient('bottom')
.innerTickSize(-chartHeight).outerTickSize(0).tickPadding(10),
yAxis = d3.svg.axis().scale(y).orient('left')
.innerTickSize(-chartWidth).outerTickSize(0).tickPadding(10);
var svg = d3.select('body').append('svg')
.attr('width', svgWidth)
.attr('height', svgHeight)
.append('g')
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
// clipping to start chart hidden and slide it in later
var rectClip = svg.append('clipPath')
.attr('id', 'rect-clip')
.append('rect')
.attr('width', 0)
.attr('height', chartHeight);
addAxesAndLegend(svg, xAxis, yAxis, margin, chartWidth, chartHeight);
drawPaths(svg, data, x, y);
startTransitions(svg, chartWidth, chartHeight, rectClip, markers, x);
}
var parseDate = d3.time.format('%Y-%m-%d').parse;
d3.json('data.json', function (error, rawData) {
if (error) {
console.error(error);
return;
}
var data = rawData.map(function (d) {
return {
date: parseDate(d.date),
pct05: d.pct05 / 1000,
pct25: d.pct25 / 1000,
pct50: d.pct50 / 1000,
pct75: d.pct75 / 1000,
pct95: d.pct95 / 1000
};
});
d3.json('markers.json', function (error, markerData) {
if (error) {
console.error(error);
return;
}
var markers = markerData.map(function (marker) {
return {
date: parseDate(marker.date),
type: marker.type,
version: marker.version
};
});
makeChart(data, markers);
});
});
<!DOCTYPE html>
<meta charset="utf-8">
<style>
text {
font: 10px sans-serif;
}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var diameter = 960,
format = d3.format(",d"),
color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.size([diameter, diameter])
.padding(1.5);
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "bubble");
d3.json("flare.json", function(error, root) {
if (error) throw error;
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
.filter(function(d) { return !d.children; }))
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("title")
.text(function(d) { return d.className + ": " + format(d.value); });
node.append("circle")
.attr("r", function(d) { return d.r; })
.style("fill", function(d) { return color(d.packageName); });
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.className.substring(0, d.r / 3); });
});
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: name, className: node.name, value: node.size});
}
recurse(null, root);
return {children: classes};
}
d3.select(self.frameElement).style("height", diameter + "px");
</script>
[
{
"date": "2014-08-01",
"pct05": 5350,
"pct25": 6756,
"pct50": 7819,
"pct75": 9284,
"pct95": 13835
},
{
"date": "2014-08-02",
"pct05": 4439,
"pct25": 5584,
"pct50": 6554,
"pct75": 8016,
"pct95": 12765
},
{
"date": "2014-08-03",
"pct05": 4247,
"pct25": 5419,
"pct50": 6332,
"pct75": 7754,
"pct95": 12236
},
{
"date": "2014-08-04",
"pct05": 3293,
"pct25": 4414,
"pct50": 5191,
"pct75": 6491,
"pct95": 10325
},
{
"date": "2014-08-05",
"pct05": 3942,
"pct25": 5134,
"pct50": 6069,
"pct75": 7501,
"pct95": 11685
},
{
"date": "2014-08-06",
"pct05": 2744,
"pct25": 5508,
"pct50": 6879,
"pct75": 9221,
"pct95": 17239
},
{
"date": "2014-08-07",
"pct05": 1807,
"pct25": 3019,
"pct50": 4119,
"pct75": 5656,
"pct95": 8851
},
{
"date": "2014-08-08",
"pct05": 1855,
"pct25": 3386,
"pct50": 4473,
"pct75": 5915,
"pct95": 10580
},
{
"date": "2014-08-09",
"pct05": 1830,
"pct25": 3202,
"pct50": 4233,
"pct75": 5559,
"pct95": 8930
},
{
"date": "2014-08-10",
"pct05": 1828,
"pct25": 3195,
"pct50": 4304,
"pct75": 5482,
"pct95": 9189
},
{
"date": "2014-08-11",
"pct05": 2246,
"pct25": 3929,
"pct50": 5326,
"pct75": 7077,
"pct95": 11648
},
{
"date": "2014-08-12",
"pct05": 2051,
"pct25": 3662,
"pct50": 4849,
"pct75": 6194,
"pct95": 10078
},
{
"date": "2014-08-13",
"pct05": 1700,
"pct25": 3075,
"pct50": 4068,
"pct75": 5259,
"pct95": 9789
},
{
"date": "2014-08-14",
"pct05": 2161,
"pct25": 3891,
"pct50": 5262,
"pct75": 6924,
"pct95": 11612
},
{
"date": "2014-08-15",
"pct05": 1765,
"pct25": 3190,
"pct50": 4388,
"pct75": 5822,
"pct95": 9433
},
{
"date": "2014-08-16",
"pct05": 2036,
"pct25": 3756,
"pct50": 4775,
"pct75": 6158,
"pct95": 9999
},
{
"date": "2014-08-17",
"pct05": 2079,
"pct25": 3561,
"pct50": 4753,
"pct75": 6124,
"pct95": 9807
},
{
"date": "2014-08-18",
"pct05": 2108,
"pct25": 3576,
"pct50": 4818,
"pct75": 6344,
"pct95": 10235
},
{
"date": "2014-08-19",
"pct05": 2143,
"pct25": 3792,
"pct50": 5073,
"pct75": 6772,
"pct95": 11338
},
{
"date": "2014-08-20",
"pct05": 2086,
"pct25": 3801,
"pct50": 5073,
"pct75": 6688,
"pct95": 12394
},
{
"date": "2014-08-21",
"pct05": 1767,
"pct25": 3253,
"pct50": 4282,
"pct75": 5563,
"pct95": 9167
},
{
"date": "2014-08-22",
"pct05": 1756,
"pct25": 3047,
"pct50": 3950,
"pct75": 5006,
"pct95": 7948
},
{
"date": "2014-08-23",
"pct05": 2123,
"pct25": 3755,
"pct50": 5173,
"pct75": 7243,
"pct95": 12338
},
{
"date": "2014-08-24",
"pct05": 1967,
"pct25": 3404,
"pct50": 4529,
"pct75": 5970,
"pct95": 9897
},
{
"date": "2014-08-25",
"pct05": 1537,
"pct25": 2612,
"pct50": 3394,
"pct75": 4279,
"pct95": 7104
},
{
"date": "2014-08-26",
"pct05": 2182,
"pct25": 3958,
"pct50": 5505,
"pct75": 7642,
"pct95": 12707
},
{
"date": "2014-08-27",
"pct05": 1932,
"pct25": 3366,
"pct50": 4526,
"pct75": 6086,
"pct95": 9930
},
{
"date": "2014-08-28",
"pct05": 1268,
"pct25": 2344,
"pct50": 3256,
"pct75": 4215,
"pct95": 6673
},
{
"date": "2014-08-29",
"pct05": 1225,
"pct25": 2239,
"pct50": 3033,
"pct75": 4111,
"pct95": 7601
},
{
"date": "2014-08-30",
"pct05": 1393,
"pct25": 2432,
"pct50": 3417,
"pct75": 4710,
"pct95": 8798
},
{
"date": "2014-08-31",
"pct05": 1175,
"pct25": 2020,
"pct50": 2768,
"pct75": 3889,
"pct95": 7744
},
{
"date": "2014-09-01",
"pct05": 989,
"pct25": 1655,
"pct50": 2218,
"pct75": 3167,
"pct95": 6018
},
{
"date": "2014-09-02",
"pct05": 1249,
"pct25": 2069,
"pct50": 2738,
"pct75": 3938,
"pct95": 7574
},
{
"date": "2014-09-03",
"pct05": 936,
"pct25": 1510,
"pct50": 1968,
"pct75": 2700,
"pct95": 5215
},
{
"date": "2014-09-04",
"pct05": 1264,
"pct25": 2039,
"pct50": 2657,
"pct75": 3646,
"pct95": 7042
},
{
"date": "2014-09-05",
"pct05": 1305,
"pct25": 2106,
"pct50": 2745,
"pct75": 3766,
"pct95": 7273
},
{
"date": "2014-09-06",
"pct05": 798,
"pct25": 1288,
"pct50": 1678,
"pct75": 2303,
"pct95": 4448
},
{
"date": "2014-09-07",
"pct05": 1314,
"pct25": 2120,
"pct50": 2763,
"pct75": 3791,
"pct95": 7321
},
{
"date": "2014-09-08",
"pct05": 1042,
"pct25": 1681,
"pct50": 2191,
"pct75": 3007,
"pct95": 5806
}
]
{
"name": "flare",
"children": [
{
"name": "analytics",
"children": [
{
"name": "cluster",
"children": [
{"name": "AgglomerativeCluster", "size": 3938},
{"name": "CommunityStructure", "size": 3812},
{"name": "HierarchicalCluster", "size": 6714},
{"name": "MergeEdge", "size": 743}
]
},
{
"name": "graph",
"children": [
{"name": "BetweennessCentrality", "size": 3534},
{"name": "LinkDistance", "size": 5731},
{"name": "MaxFlowMinCut", "size": 7840},
{"name": "ShortestPaths", "size": 5914},
{"name": "SpanningTree", "size": 3416}
]
},
{
"name": "optimization",
"children": [
{"name": "AspectRatioBanker", "size": 7074}
]
}
]
},
{
"name": "animate",
"children": [
{"name": "Easing", "size": 17010},
{"name": "FunctionSequence", "size": 5842},
{
"name": "interpolate",
"children": [
{"name": "ArrayInterpolator", "size": 1983},
{"name": "ColorInterpolator", "size": 2047},
{"name": "DateInterpolator", "size": 1375},
{"name": "Interpolator", "size": 8746},
{"name": "MatrixInterpolator", "size": 2202},
{"name": "NumberInterpolator", "size": 1382},
{"name": "ObjectInterpolator", "size": 1629},
{"name": "PointInterpolator", "size": 1675},
{"name": "RectangleInterpolator", "size": 2042}
]
},
{"name": "ISchedulable", "size": 1041},
{"name": "Parallel", "size": 5176},
{"name": "Pause", "size": 449},
{"name": "Scheduler", "size": 5593},
{"name": "Sequence", "size": 5534},
{"name": "Transition", "size": 9201},
{"name": "Transitioner", "size": 19975},
{"name": "TransitionEvent", "size": 1116},
{"name": "Tween", "size": 6006}
]
},
{
"name": "data",
"children": [
{
"name": "converters",
"children": [
{"name": "Converters", "size": 721},
{"name": "DelimitedTextConverter", "size": 4294},
{"name": "GraphMLConverter", "size": 9800},
{"name": "IDataConverter", "size": 1314},
{"name": "JSONConverter", "size": 2220}
]
},
{"name": "DataField", "size": 1759},
{"name": "DataSchema", "size": 2165},
{"name": "DataSet", "size": 586},
{"name": "DataSource", "size": 3331},
{"name": "DataTable", "size": 772},
{"name": "DataUtil", "size": 3322}
]
},
{
"name": "display",
"children": [
{"name": "DirtySprite", "size": 8833},
{"name": "LineSprite", "size": 1732},
{"name": "RectSprite", "size": 3623},
{"name": "TextSprite", "size": 10066}
]
},
{
"name": "flex",
"children": [
{"name": "FlareVis", "size": 4116}
]
},
{
"name": "physics",
"children": [
{"name": "DragForce", "size": 1082},
{"name": "GravityForce", "size": 1336},
{"name": "IForce", "size": 319},
{"name": "NBodyForce", "size": 10498},
{"name": "Particle", "size": 2822},
{"name": "Simulation", "size": 9983},
{"name": "Spring", "size": 2213},
{"name": "SpringForce", "size": 1681}
]
},
{
"name": "query",
"children": [
{"name": "AggregateExpression", "size": 1616},
{"name": "And", "size": 1027},
{"name": "Arithmetic", "size": 3891},
{"name": "Average", "size": 891},
{"name": "BinaryExpression", "size": 2893},
{"name": "Comparison", "size": 5103},
{"name": "CompositeExpression", "size": 3677},
{"name": "Count", "size": 781},
{"name": "DateUtil", "size": 4141},
{"name": "Distinct", "size": 933},
{"name": "Expression", "size": 5130},
{"name": "ExpressionIterator", "size": 3617},
{"name": "Fn", "size": 3240},
{"name": "If", "size": 2732},
{"name": "IsA", "size": 2039},
{"name": "Literal", "size": 1214},
{"name": "Match", "size": 3748},
{"name": "Maximum", "size": 843},
{
"name": "methods",
"children": [
{"name": "add", "size": 593},
{"name": "and", "size": 330},
{"name": "average", "size": 287},
{"name": "count", "size": 277},
{"name": "distinct", "size": 292},
{"name": "div", "size": 595},
{"name": "eq", "size": 594},
{"name": "fn", "size": 460},
{"name": "gt", "size": 603},
{"name": "gte", "size": 625},
{"name": "iff", "size": 748},
{"name": "isa", "size": 461},
{"name": "lt", "size": 597},
{"name": "lte", "size": 619},
{"name": "max", "size": 283},
{"name": "min", "size": 283},
{"name": "mod", "size": 591},
{"name": "mul", "size": 603},
{"name": "neq", "size": 599},
{"name": "not", "size": 386},
{"name": "or", "size": 323},
{"name": "orderby", "size": 307},
{"name": "range", "size": 772},
{"name": "select", "size": 296},
{"name": "stddev", "size": 363},
{"name": "sub", "size": 600},
{"name": "sum", "size": 280},
{"name": "update", "size": 307},
{"name": "variance", "size": 335},
{"name": "where", "size": 299},
{"name": "xor", "size": 354},
{"name": "_", "size": 264}
]
},
{"name": "Minimum", "size": 843},
{"name": "Not", "size": 1554},
{"name": "Or", "size": 970},
{"name": "Query", "size": 13896},
{"name": "Range", "size": 1594},
{"name": "StringUtil", "size": 4130},
{"name": "Sum", "size": 791},
{"name": "Variable", "size": 1124},
{"name": "Variance", "size": 1876},
{"name": "Xor", "size": 1101}
]
},
{
"name": "scale",
"children": [
{"name": "IScaleMap", "size": 2105},
{"name": "LinearScale", "size": 1316},
{"name": "LogScale", "size": 3151},
{"name": "OrdinalScale", "size": 3770},
{"name": "QuantileScale", "size": 2435},
{"name": "QuantitativeScale", "size": 4839},
{"name": "RootScale", "size": 1756},
{"name": "Scale", "size": 4268},
{"name": "ScaleType", "size": 1821},
{"name": "TimeScale", "size": 5833}
]
},
{
"name": "util",
"children": [
{"name": "Arrays", "size": 8258},
{"name": "Colors", "size": 10001},
{"name": "Dates", "size": 8217},
{"name": "Displays", "size": 12555},
{"name": "Filter", "size": 2324},
{"name": "Geometry", "size": 10993},
{
"name": "heap",
"children": [
{"name": "FibonacciHeap", "size": 9354},
{"name": "HeapNode", "size": 1233}
]
},
{"name": "IEvaluable", "size": 335},
{"name": "IPredicate", "size": 383},
{"name": "IValueProxy", "size": 874},
{
"name": "math",
"children": [
{"name": "DenseMatrix", "size": 3165},
{"name": "IMatrix", "size": 2815},
{"name": "SparseMatrix", "size": 3366}
]
},
{"name": "Maths", "size": 17705},
{"name": "Orientation", "size": 1486},
{
"name": "palette",
"children": [
{"name": "ColorPalette", "size": 6367},
{"name": "Palette", "size": 1229},
{"name": "ShapePalette", "size": 2059},
{"name": "SizePalette", "size": 2291}
]
},
{"name": "Property", "size": 5559},
{"name": "Shapes", "size": 19118},
{"name": "Sort", "size": 6887},
{"name": "Stats", "size": 6557},
{"name": "Strings", "size": 22026}
]
},
{
"name": "vis",
"children": [
{
"name": "axis",
"children": [
{"name": "Axes", "size": 1302},
{"name": "Axis", "size": 24593},
{"name": "AxisGridLine", "size": 652},
{"name": "AxisLabel", "size": 636},
{"name": "CartesianAxes", "size": 6703}
]
},
{
"name": "controls",
"children": [
{"name": "AnchorControl", "size": 2138},
{"name": "ClickControl", "size": 3824},
{"name": "Control", "size": 1353},
{"name": "ControlList", "size": 4665},
{"name": "DragControl", "size": 2649},
{"name": "ExpandControl", "size": 2832},
{"name": "HoverControl", "size": 4896},
{"name": "IControl", "size": 763},
{"name": "PanZoomControl", "size": 5222},
{"name": "SelectionControl", "size": 7862},
{"name": "TooltipControl", "size": 8435}
]
},
{
"name": "data",
"children": [
{"name": "Data", "size": 20544},
{"name": "DataList", "size": 19788},
{"name": "DataSprite", "size": 10349},
{"name": "EdgeSprite", "size": 3301},
{"name": "NodeSprite", "size": 19382},
{
"name": "render",
"children": [
{"name": "ArrowType", "size": 698},
{"name": "EdgeRenderer", "size": 5569},
{"name": "IRenderer", "size": 353},
{"name": "ShapeRenderer", "size": 2247}
]
},
{"name": "ScaleBinding", "size": 11275},
{"name": "Tree", "size": 7147},
{"name": "TreeBuilder", "size": 9930}
]
},
{
"name": "events",
"children": [
{"name": "DataEvent", "size": 2313},
{"name": "SelectionEvent", "size": 1880},
{"name": "TooltipEvent", "size": 1701},
{"name": "VisualizationEvent", "size": 1117}
]
},
{
"name": "legend",
"children": [
{"name": "Legend", "size": 20859},
{"name": "LegendItem", "size": 4614},
{"name": "LegendRange", "size": 10530}
]
},
{
"name": "operator",
"children": [
{
"name": "distortion",
"children": [
{"name": "BifocalDistortion", "size": 4461},
{"name": "Distortion", "size": 6314},
{"name": "FisheyeDistortion", "size": 3444}
]
},
{
"name": "encoder",
"children": [
{"name": "ColorEncoder", "size": 3179},
{"name": "Encoder", "size": 4060},
{"name": "PropertyEncoder", "size": 4138},
{"name": "ShapeEncoder", "size": 1690},
{"name": "SizeEncoder", "size": 1830}
]
},
{
"name": "filter",
"children": [
{"name": "FisheyeTreeFilter", "size": 5219},
{"name": "GraphDistanceFilter", "size": 3165},
{"name": "VisibilityFilter", "size": 3509}
]
},
{"name": "IOperator", "size": 1286},
{
"name": "label",
"children": [
{"name": "Labeler", "size": 9956},
{"name": "RadialLabeler", "size": 3899},
{"name": "StackedAreaLabeler", "size": 3202}
]
},
{
"name": "layout",
"children": [
{"name": "AxisLayout", "size": 6725},
{"name": "BundledEdgeRouter", "size": 3727},
{"name": "CircleLayout", "size": 9317},
{"name": "CirclePackingLayout", "size": 12003},
{"name": "DendrogramLayout", "size": 4853},
{"name": "ForceDirectedLayout", "size": 8411},
{"name": "IcicleTreeLayout", "size": 4864},
{"name": "IndentedTreeLayout", "size": 3174},
{"name": "Layout", "size": 7881},
{"name": "NodeLinkTreeLayout", "size": 12870},
{"name": "PieLayout", "size": 2728},
{"name": "RadialTreeLayout", "size": 12348},
{"name": "RandomLayout", "size": 870},
{"name": "StackedAreaLayout", "size": 9121},
{"name": "TreeMapLayout", "size": 9191}
]
},
{"name": "Operator", "size": 2490},
{"name": "OperatorList", "size": 5248},
{"name": "OperatorSequence", "size": 4190},
{"name": "OperatorSwitch", "size": 2581},
{"name": "SortOperator", "size": 2023}
]
},
{"name": "Visualization", "size": 16540}
]
}
]
}
<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize() {
var mapProp = {
center:new google.maps.LatLng(51.508742,-0.120850),
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var marker=new google.maps.Marker({
position:myCenter,
});
marker.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="googleMap" style="width:500px;height:380px;"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script
src="http://maps.googleapis.com/maps/api/js">
</script>
<script>
var myCenter=new google.maps.LatLng(51.508742,-0.120850);
var marker;
function initialize()
{
var mapProp = {
center:myCenter,
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var marker=new google.maps.Marker({
position:myCenter
//animation:google.maps.Animation.BOUNCE
});
marker.setMap(map);
var infowindow = new google.maps.InfoWindow({
content:"Hello World!"
});
infowindow.open(map,marker);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="googleMap" style="width:500px;height:380px;"></div>
</body>
</html>
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.counties {
fill: none;
}
.states {
fill: none;
stroke: #fff;
stroke-linejoin: round;
}
.q0-9 { fill:rgb(247,251,255); }
.q1-9 { fill:rgb(222,235,247); }
.q2-9 { fill:rgb(198,219,239); }
.q3-9 { fill:rgb(158,202,225); }
.q4-9 { fill:rgb(107,174,214); }
.q5-9 { fill:rgb(66,146,198); }
.q6-9 { fill:rgb(33,113,181); }
.q7-9 { fill:rgb(8,81,156); }
.q8-9 { fill:rgb(8,48,107); }
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script src="//d3js.org/queue.v1.min.js"></script>
<script src="//d3js.org/topojson.v1.min.js"></script>
<script>
var width = 960,
height = 600;
var rateById = d3.map();
var quantize = d3.scale.quantize()
.domain([0, .15])
.range(d3.range(9).map(function(i) { return "q" + i + "-9"; }));
var projection = d3.geo.albersUsa()
.scale(1280)
.translate([width / 2, height / 2]);
var path = d3.geo.path()
.projection(projection);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
queue()
.defer(d3.json, "/mbostock/raw/4090846/us.json")
.defer(d3.tsv, "unemployment.tsv", function(d) { rateById.set(d.id, +d.rate); })
.await(ready);
function ready(error, us) {
if (error) throw error;
svg.append("g")
.attr("class", "counties")
.selectAll("path")
.data(topojson.feature(us, us.objects.counties).features)
.enter().append("path")
.attr("class", function(d) { return quantize(rateById.get(d.id)); })
.attr("d", path);
svg.append("path")
.datum(topojson.mesh(us, us.objects.states, function(a, b) { return a !== b; }))
.attr("class", "states")
.attr("d", path);
}
d3.select(self.frameElement).style("height", height + "px");
</script>
https://gist.github.com/mbostock/4090870
[
{
"date": "2014-08-06",
"type": "Client",
"version": "2.0"
},
{
"date": "2014-08-20",
"type": "Client",
"version": "2.1"
},
{
"date": "2014-08-27",
"type": "Server",
"version": "3.5"
},
{
"date": "2014-09-03",
"type": "Client",
"version": "2.2"
}
]
<!DOCTYPE html>
<meta charset="utf-8">
<title>Plotting a Trendline with D3.js</title>
<style>
.line {
stroke: blue;
fill:none;
stroke-width: 3;
}
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-size: 10px;
font-family: sans-serif;
}
.text-label {
font-size: 10px;
font-family: sans-serif;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var height = 300;
var width = 600;
var margin = {top: 20, right:20, bottom: 50, left: 20};
// formatters for axis and labels
var currencyFormat = d3.format("$0.2f");
var decimalFormat = d3.format("0.2f");
var svg = d3.select("body")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("class", "y axis");
svg.append("g")
.attr("class", "x axis");
var xScale = d3.scale.ordinal()
.rangeRoundBands([margin.left, width], .1);
var yScale = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left");
d3.csv("usd_euro.csv", function(data) {
// extract the x labels for the axis and scale domain
var xLabels = data.map(function (d) { return d['yearmonth']; })
xScale.domain(xLabels);
yScale.domain([0, Math.round(d3.max(data, function(d) { return parseFloat(d['rate']); }))]);
var line = d3.svg.line()
.x(function(d) { return xScale(d['yearmonth']); })
.y(function(d) { return yScale(d['rate']); });
svg.append("path")
.datum(data)
.attr("class","line")
.attr("d", line);
svg.select(".x.axis")
.attr("transform", "translate(0," + (height) + ")")
.call(xAxis.tickValues(xLabels.filter(function(d, i) {
if (i % 12 == 0)
return d;
})))
.selectAll("text")
.style("text-anchor","end")
.attr("transform", function(d) {
return "rotate(-45)";
});
svg.select(".y.axis")
.attr("transform", "translate(" + (margin.left) + ",0)")
.call(yAxis.tickFormat(currencyFormat));
// chart title
svg.append("text")
.attr("x", (width + (margin.left + margin.right) )/ 2)
.attr("y", 0 + margin.top)
.attr("text-anchor", "middle")
.style("font-size", "16px")
.style("font-family", "sans-serif")
.text("USD/EURO Exhange Rate");
// x axis label
svg.append("text")
.attr("x", (width + (margin.left + margin.right) )/ 2)
.attr("y", height + margin.bottom)
.attr("class", "text-label")
.attr("text-anchor", "middle")
.text("Year-Month");
// get the x and y values for least squares
var xSeries = d3.range(1, xLabels.length + 1);
var ySeries = data.map(function(d) { return parseFloat(d['rate']); });
var leastSquaresCoeff = leastSquares(xSeries, ySeries);
// apply the reults of the least squares regression
var x1 = xLabels[0];
var y1 = leastSquaresCoeff[0] + leastSquaresCoeff[1];
var x2 = xLabels[xLabels.length - 1];
var y2 = leastSquaresCoeff[0] * xSeries.length + leastSquaresCoeff[1];
var trendData = [[x1,y1,x2,y2]];
var trendline = svg.selectAll(".trendline")
.data(trendData);
trendline.enter()
.append("line")
.attr("class", "trendline")
.attr("x1", function(d) { return xScale(d[0]); })
.attr("y1", function(d) { return yScale(d[1]); })
.attr("x2", function(d) { return xScale(d[2]); })
.attr("y2", function(d) { return yScale(d[3]); })
.attr("stroke", "black")
.attr("stroke-width", 1);
// display equation on the chart
svg.append("text")
.text("eq: " + decimalFormat(leastSquaresCoeff[0]) + "x + " +
decimalFormat(leastSquaresCoeff[1]))
.attr("class", "text-label")
.attr("x", function(d) {return xScale(x2) - 60;})
.attr("y", function(d) {return yScale(y2) - 30;});
// display r-square on the chart
svg.append("text")
.text("r-sq: " + decimalFormat(leastSquaresCoeff[2]))
.attr("class", "text-label")
.attr("x", function(d) {return xScale(x2) - 60;})
.attr("y", function(d) {return yScale(y2) - 10;});
});
// returns slope, intercept and r-square of the line
function leastSquares(xSeries, ySeries) {
var reduceSumFunc = function(prev, cur) { return prev + cur; };
var xBar = xSeries.reduce(reduceSumFunc) * 1.0 / xSeries.length;
var yBar = ySeries.reduce(reduceSumFunc) * 1.0 / ySeries.length;
var ssXX = xSeries.map(function(d) { return Math.pow(d - xBar, 2); })
.reduce(reduceSumFunc);
var ssYY = ySeries.map(function(d) { return Math.pow(d - yBar, 2); })
.reduce(reduceSumFunc);
var ssXY = xSeries.map(function(d, i) { return (d - xBar) * (ySeries[i] - yBar); })
.reduce(reduceSumFunc);
var slope = ssXY / ssXX;
var intercept = yBar - (xBar * slope);
var rSquare = Math.pow(ssXY, 2) / (ssXX * ssYY);
return [slope, intercept, rSquare];
}
</script>
</body>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Trend Chart (Area + Line)</title>
<link rel="stylesheet" href="app.css">
</head>
<body>
</body>
<script src="http://d3js.org/d3.v3.js"></script>
<script src="app.js"></script>
</html>
http://bl.ocks.org/rkirsling/33a9e350516da54a5d4f
id rate
1001 .097
1003 .091
1005 .134
1007 .121
1009 .099
1011 .164
1013 .167
1015 .108
1017 .186
1019 .118
1021 .099
1023 .127
1025 .17
1027 .159
1029 .104
1031 .085
1033 .114
1035 .195
1037 .14
1039 .101
1041 .097
1043 .096
1045 .093
1047 .211
1049 .143
1051 .09
1053 .129
1055 .107
1057 .128
1059 .123
1061 .1
1063 .147
1065 .127
1067 .099
1069 .089
1071 .118
1073 .107
1075 .148
1077 .105
1079 .136
1081 .086
1083 .093
1085 .185
1087 .114
1089 .075
1091 .148
1093 .152
1095 .092
1097 .111
1099 .187
1101 .102
1103 .104
1105 .198
1107 .13
1109 .087
1111 .151
1113 .126
1115 .107
1117 .076
1119 .139
1121 .136
1123 .137
1125 .09
1127 .119
1129 .151
1131 .256
1133 .175
2013 .101
2016 .084
2020 .07
2050 .148
2060 .036
2068 .034
2070 .084
2090 .069
2100 .062
2110 .057
2122 .097
2130 .061
2150 .066
2164 .059
2170 .088
2180 .121
2185 .057
2188 .132
2201 .136
2220 .059
2232 .073
2240 .081
2261 .064
2270 .204
2280 .098
2282 .063
2290 .136
4001 .148
4003 .074
4005 .077
4007 .109
4009 .144
4011 .215
4012 .089
4013 .085
4015 .102
4017 .142
4019 .084
4021 .118
4023 .172
4025 .095
4027 .242
5001 .143
5003 .091
5005 .082
5007 .053
5009 .064
5011 .078
5013 .062
5015 .043
5017 .096
5019 .063
5021 .104
5023 .059
5025 .06
5027 .081
5029 .065
5031 .059
5033 .066
5035 .099
5037 .071
5039 .076
5041 .099
5043 .091
5045 .06
5047 .059
5049 .061
5051 .066
5053 .057
5055 .082
5057 .086
5059 .073
5061 .072
5063 .078
5065 .077
5067 .092
5069 .092
5071 .061
5073 .086
5075 .079
5077 .082
5079 .082
5081 .056
5083 .077
5085 .052
5087 .053
5089 .112
5091 .045
5093 .113
5095 .074
5097 .058
5099 .087
5101 .062
5103 .071
5105 .056
5107 .088
5109 .063
5111 .075
5113 .064
5115 .062
5117 .067
5119 .06
5121 .073
5123 .094
5125 .058
5127 .063
5129 .059
5131 .062
5133 .051
5135 .078
5137 .066
5139 .095
5141 .091
5143 .05
5145 .067
5147 .091
5149 .064
6001 .113
6003 .152
6005 .121
6007 .122
6009 .143
6011 .145
6013 .112
6015 .119
6017 .112
6019 .141
6021 .138
6023 .103
6025 .301
6027 .095
6029 .139
6031 .139
6033 .147
6035 .118
6037 .127
6039 .123
6041 .08
6043 .088
6045 .101
6047 .157
6049 .111
6051 .103
6053 .1
6055 .087
6057 .109
6059 .094
6061 .113
6063 .139
6065 .147
6067 .122
6069 .125
6071 .136
6073 .102
6075 .097
6077 .155
6079 .09
6081 .09
6083 .085
6085 .118
6087 .102
6089 .147
6091 .137
6093 .135
6095 .115
6097 .099
6099 .153
6101 .151
6103 .137
6105 .159
6107 .149
6109 .127
6111 .11
6113 .109
6115 .178
8001 .081
8003 .055
8005 .069
8007 .062
8009 .034
8011 .05
8013 .055
8014 .066
8015 .051
8017 .02
8019 .07
8021 .051
8023 .084
8025 .076
8027 .052
8029 .066
8031 .077
8033 .132
8035 .059
8037 .062
8039 .06
8041 .072
8043 .077
8045 .058
8047 .06
8049 .058
8051 .044
8053 .022
8055 .072
8057 .033
8059 .067
8061 .028
8063 .029
8065 .071
8067 .047
8069 .056
8071 .07
8073 .037
8075 .046
8077 .082
8079 .053
8081 .056
8083 .063
8085 .069
8087 .049
8089 .058
8091 .041
8093 .061
8095 .026
8097 .05
8099 .05
8101 .075
8103 .039
8105 .048
8107 .06
8109 .078
8111 .053
8113 .042
8115 .033
8117 .058
8119 .067
8121 .032
8123 .075
8125 .026
9001 .078
9003 .088
9005 .079
9007 .067
9009 .089
9011 .076
9013 .067
9015 .09
10001 .079
10003 .086
10005 .073
11001 .117
12001 .071
12003 .114
12005 .089
12007 .083
12009 .111
12011 .098
12013 .082
12015 .127
12017 .121
12019 .098
12021 .131
12023 .09
12027 .117
12029 .123
12031 .112
12033 .098
12035 .162
12037 .071
12039 .096
12041 .1
12043 .1
12045 .098
12047 .113
12049 .126
12051 .168
12053 .138
12055 .116
12057 .115
12059 .072
12061 .152
12063 .072
12065 .085
12067 .072
12069 .123
12071 .139
12073 .072
12075 .121
12077 .053
12079 .117
12081 .127
12083 .133
12085 .119
12086 .113
12087 .07
12089 .107
12091 .072
12093 .133
12095 .114
12097 .128
12099 .117
12101 .125
12103 .112
12105 .127
12107 .122
12109 .09
12111 .153
12113 .094
12115 .123
12117 .106
12119 .09
12121 .098
12123 .104
12125 .084
12127 .117
12129 .072
12131 .068
12133 .096
13001 .097
13003 .126
13005 .085
13007 .091
13009 .116
13011 .067
13013 .111
13015 .133
13017 .153
13019 .124
13021 .1
13023 .097
13025 .116
13027 .087
13029 .081
13031 .09
13033 .122
13035 .127
13037 .111
13039 .091
13043 .093
13045 .108
13047 .08
13049 .106
13051 .085
13053 .146
13055 .114
13057 .095
13059 .07
13061 .082
13063 .123
13065 .11
13067 .096
13069 .168
13071 .09
13073 .07
13075 .119
13077 .1
13079 .095
13081 .121
13083 .09
13085 .101
13087 .127
13089 .107
13091 .112
13093 .101
13095 .111
13097 .114
13099 .105
13101 .067
13103 .079
13105 .122
13107 .103
13109 .089
13111 .1
13113 .084
13115 .111
13117 .086
13119 .118
13121 .107
13123 .098
13125 .111
13127 .082
13129 .131
13131 .098
13133 .111
13135 .094
13137 .094
13139 .091
13141 .177
13143 .113
13145 .072
13147 .138
13149 .124
13151 .104
13153 .073
13155 .145
13157 .109
13159 .127
13161 .135
13163 .149
13165 .196
13167 .119
13169 .086
13171 .153
13173 .084
13175 .108
13177 .079
13179 .085
13181 .103
13183 .059
13185 .082
13187 .111
13189 .121
13191 .096
13193 .13
13195 .083
13197 .099
13199 .132
13201 .087
13205 .104
13207 .102
13209 .085
13211 .098
13213 .123
13215 .092
13217 .126
13219 .062
13221 .082
13223 .107
13225 .102
13227 .108
13229 .093
13231 .118
13233 .108
13235 .071
13237 .104
13239 .118
13241 .104
13243 .13
13245 .103
13247 .12
13249 .138
13251 .137
13253 .107
13255 .154
13257 .107
13259 .107
13261 .129
13263 .098
13265 .124
13267 .087
13269 .13
13271 .162
13273 .116
13275 .093
13277 .106
13279 .098
13281 .078
13283 .119
13285 .129
13287 .13
13289 .114
13291 .09
13293 .133
13295 .096
13297 .11
13299 .107
13301 .188
13303 .14
13305 .117
13307 .091
13309 .091
13311 .095
13313 .125
13315 .116
13317 .117
13319 .107
13321 .108
15001 .108
15003 .063
15007 .096
15009 .097
16001 .091
16003 .121
16005 .084
16007 .052
16009 .121
16011 .059
16013 .077
16015 .071
16017 .095
16019 .059
16021 .12
16023 .045
16025 .11
16027 .106
16029 .06
16031 .059
16033 .041
16035 .118
16037 .039
16039 .077
16041 .04
16043 .066
16045 .104
16047 .055
16049 .083
16051 .068
16053 .059
16055 .087
16057 .059
16059 .065
16061 .052
16063 .097
16065 .055
16067 .06
16069 .055
16071 .05
16073 .041
16075 .077
16077 .067
16079 .119
16081 .051
16083 .068
16085 .114
16087 .084
17001 .079
17003 .112
17005 .093
17007 .138
17009 .045
17011 .109
17013 .095
17015 .105
17017 .073
17019 .082
17021 .099
17023 .131
17025 .114
17027 .079
17029 .091
17031 .106
17033 .105
17035 .097
17037 .092
17039 .092
17041 .091
17043 .086
17045 .107
17047 .091
17049 .079
17051 .116
17053 .104
17055 .146
17057 .125
17059 .11
17061 .092
17063 .114
17065 .093
17067 .113
17069 .128
17071 .094
17073 .086
17075 .1
17077 .073
17079 .095
17081 .1
17083 .088
17085 .081
17087 .104
17089 .099
17091 .128
17093 .104
17095 .103
17097 .1
17099 .124
17101 .103
17103 .109
17105 .107
17107 .095
17109 .077
17111 .093
17113 .074
17115 .124
17117 .105
17119 .097
17121 .119
17123 .106
17125 .143
17127 .08
17129 .078
17131 .089
17133 .078
17135 .122
17137 .084
17139 .09
17141 .119
17143 .116
17145 .119
17147 .082
17149 .081
17151 .106
17153 .119
17155 .15
17157 .094
17159 .105
17161 .095
17163 .108
17165 .112
17167 .079
17169 .066
17171 .075
17173 .1
17175 .098
17177 .116
17179 .113
17181 .108
17183 .12
17185 .103
17187 .08
17189 .08
17191 .097
17193 .086
17195 .106
17197 .099
17199 .096
17201 .155
17203 .086
18001 .134
18003 .093
18005 .088
18007 .09
18009 .133
18011 .068
18013 .078
18015 .099
18017 .105
18019 .082
18021 .096
18023 .092
18025 .105
18027 .049
18029 .089
18031 .11
18033 .124
18035 .095
18037 .08
18039 .15
18041 .134
18043 .074
18045 .116
18047 .089
18049 .112
18051 .067
18053 .111
18055 .071
18057 .061
18059 .078
18061 .078
18063 .068
18065 .12
18067 .119
18069 .111
18071 .101
18073 .087
18075 .104
18077 .095
18079 .122
18081 .074
18083 .066
18085 .11
18087 .14
18089 .094
18091 .107
18093 .111
18095 .097
18097 .084
18099 .114
18101 .063
18103 .123
18105 .056
18107 .097
18109 .075
18111 .089
18113 .145
18115 .105
18117 .092
18119 .081
18121 .083
18123 .088
18125 .087
18127 .082
18129 .07
18131 .095
18133 .082
18135 .102
18137 .091
18139 .095
18141 .104
18143 .121
18145 .088
18147 .081
18149 .126
18151 .129
18153 .093
18155 .07
18157 .085
18159 .103
18161 .086
18163 .074
18165 .108
18167 .092
18169 .12
18171 .101
18173 .069
18175 .112
18177 .109
18179 .091
18181 .094
18183 .116
19001 .051
19003 .06
19005 .093
19007 .094
19009 .051
19011 .058
19013 .058
19015 .059
19017 .05
19019 .059
19021 .055
19023 .06
19025 .054
19027 .042
19029 .058
19031 .057
19033 .067
19035 .044
19037 .084
19039 .074
19041 .062
19043 .079
19045 .077
19047 .047
19049 .051
19051 .101
19053 .066
19055 .068
19057 .082
19059 .058
19061 .06
19063 .086
19065 .085
19067 .087
19069 .07
19071 .07
19073 .063
19075 .049
19077 .056
19079 .081
19081 .09
19083 .06
19085 .044
19087 .088
19089 .086
19091 .062
19093 .058
19095 .058
19097 .077
19099 .081
19101 .087
19103 .044
19105 .063
19107 .071
19109 .056
19111 .114
19113 .065
19115 .08
19117 .06
19119 .043
19121 .058
19123 .077
19125 .057
19127 .07
19129 .043
19131 .054
19133 .071
19135 .075
19137 .087
19139 .089
19141 .053
19143 .054
19145 .087
19147 .07
19149 .047
19151 .052
19153 .062
19155 .048
19157 .066
19159 .053
19161 .047
19163 .073
19165 .039
19167 .041
19169 .045
19171 .066
19173 .067
19175 .06
19177 .08
19179 .094
19181 .058
19183 .049
19185 .064
19187 .083
19189 .091
19191 .058
19193 .057
19195 .063
19197 .084
20001 .078
20003 .079
20005 .081
20007 .051
20009 .061
20011 .065
20013 .056
20015 .072
20017 .054
20019 .084
20021 .085
20023 .037
20025 .037
20027 .042
20029 .045
20031 .057
20033 .038
20035 .076
20037 .081
20039 .033
20041 .051
20043 .088
20045 .054
20047 .044
20049 .11
20051 .036
20053 .041
20055 .043
20057 .038
20059 .071
20061 .069
20063 .035
20065 .043
20067 .042
20069 .034
20071 .045
20073 .072
20075 .042
20077 .056
20079 .074
20081 .037
20083 .042
20085 .06
20087 .067
20089 .049
20091 .068
20093 .045
20095 .063
20097 .049
20099 .078
20101 .034
20103 .073
20105 .063
20107 .084
20109 .04
20111 .057
20113 .051
20115 .063
20117 .049
20119 .042
20121 .068
20123 .058
20125 .094
20127 .068
20129 .047
20131 .043
20133 .07
20135 .04
20137 .047
20139 .07
20141 .044
20143 .065
20145 .037
20147 .06
20149 .041
20151 .053
20153 .035
20155 .063
20157 .041
20159 .051
20161 .032
20163 .073
20165 .059
20167 .046
20169 .057
20171 .032
20173 .088
20175 .051
20177 .064
20179 .032
20181 .039
20183 .043
20185 .061
20187 .034
20189 .053
20191 .09
20193 .036
20195 .036
20197 .066
20199 .059
20201 .045
20203 .035
20205 .102
20207 .089
20209 .104
21001 .101
21003 .143
21005 .109
21007 .102
21009 .116
21011 .133
21013 .125
21015 .092
21017 .091
21019 .083
21021 .11
21023 .102
21025 .1
21027 .121
21029 .108
21031 .137
21033 .109
21035 .08
21037 .107
21039 .091
21041 .124
21043 .135
21045 .102
21047 .129
21049 .114
21051 .135
21053 .09
21055 .108
21057 .13
21059 .091
21061 .128
21063 .126
21065 .129
21067 .077
21069 .122
21071 .124
21073 .091
21075 .144
21077 .111
21079 .119
21081 .101
21083 .103
21085 .164
21087 .124
21089 .098
21091 .136
21093 .1
21095 .125
21097 .111
21099 .106
21101 .098
21103 .107
21105 .092
21107 .091
21109 .175
21111 .105
21113 .088
21115 .111
21117 .1
21119 .12
21121 .115
21123 .107
21125 .101
21127 .131
21129 .123
21131 .137
21133 .12
21135 .151
21137 .121
21139 .098
21141 .104
21143 .122
21145 .091
21147 .133
21149 .106
21151 .087
21153 .214
21155 .129
21157 .107
21159 .124
21161 .111
21163 .124
21165 .147
21167 .108
21169 .158
21171 .14
21173 .126
21175 .145
21177 .107
21179 .115
21181 .125
21183 .094
21185 .086
21187 .101
21189 .112
21191 .117
21193 .125
21195 .107
21197 .167
21199 .1
21201 .096
21203 .128
21205 .086
21207 .108
21209 .091
21211 .096
21213 .118
21215 .102
21217 .102
21219 .126
21221 .16
21223 .107
21225 .108
21227 .092
21229 .127
21231 .136
21233 .088
21235 .114
21237 .139
21239 .083
22001 .071
22003 .101
22005 .067
22007 .088
22009 .081
22011 .08
22013 .105
22015 .064
22017 .079
22019 .072
22021 .107
22023 .056
22025 .103
22027 .103
22029 .113
22031 .09
22033 .068
22035 .142
22037 .08
22039 .086
22041 .113
22043 .082
22045 .076
22047 .104
22049 .078
22051 .065
22053 .064
22055 .059
22057 .049
22059 .073
22061 .078
22063 .07
22065 .093
22067 .151
22069 .084
22071 .107
22073 .076
22075 .062
22077 .079
22079 .069
22081 .096
22083 .107
22085 .081
22087 .105
22089 .065
22091 .118
22093 .1
22095 .084
22097 .083
22099 .075
22101 .086
22103 .052
22105 .081
22107 .135
22109 .052
22111 .122
22113 .072
22115 .067
22117 .096
22119 .091
22121 .074
22123 .17
22125 .082
22127 .091
23001 .084
23003 .093
23005 .065
23007 .112
23009 .068
23011 .073
23013 .07
23015 .063
23017 .109
23019 .08
23021 .116
23023 .067
23025 .107
23027 .078
23029 .104
23031 .074
24001 .075
24003 .065
24005 .077
24009 .059
24011 .088
24013 .06
24015 .086
24017 .059
24019 .109
24021 .059
24023 .069
24025 .071
24027 .054
24029 .071
24031 .053
24033 .073
24035 .066
24037 .056
24039 .095
24041 .068
24043 .094
24045 .077
24047 .075
24510 .106
25001 .08
25003 .084
25005 .118
25007 .05
25009 .101
25011 .087
25013 .105
25015 .073
25017 .081
25019 .05
25021 .085
25023 .097
25025 .093
25027 .101
26001 .167
26003 .12
26005 .132
26007 .139
26009 .147
26011 .158
26013 .243
26015 .105
26017 .123
26019 .12
26021 .135
26023 .14
26025 .124
26027 .114
26029 .139
26031 .086
26033 .116
26035 .168
26037 .094
26039 .137
26041 .115
26043 .12
26045 .103
26047 .122
26049 .158
26051 .165
26053 .133
26055 .12
26057 .137
26059 .172
26061 .102
26063 .148
26065 .116
26067 .134
26069 .164
26071 .117
26073 .085
26075 .149
26077 .112
26079 .143
26081 .117
26083 .119
26085 .175
26087 .181
26089 .09
26091 .161
26093 .136
26095 .132
26097 .061
26099 .181
26101 .126
26103 .101
26105 .129
26107 .13
26109 .125
26111 .102
26113 .15
26115 .142
26117 .176
26119 .189
26121 .16
26123 .138
26125 .156
26127 .152
26129 .127
26131 .138
26133 .153
26135 .191
26137 .147
26139 .128
26141 .16
26143 .146
26145 .129
26147 .19
26149 .139
26151 .178
26153 .127
26155 .152
26157 .163
26159 .132
26161 .093
26163 .183
26165 .183
27001 .081
27003 .079
27005 .064
27007 .072
27009 .07
27011 .045
27013 .063
27015 .055
27017 .073
27019 .07
27021 .079
27023 .061
27025 .084
27027 .036
27029 .091
27031 .047
27033 .052
27035 .074
27037 .069
27039 .061
27041 .056
27043 .076
27045 .07
27047 .076
27049 .067
27051 .068
27053 .073
27055 .071
27057 .073
27059 .083
27061 .092
27063 .047
27065 .103
27067 .055
27069 .052
27071 .073
27073 .054
27075 .075
27077 .069
27079 .086
27081 .045
27083 .049
27085 .08
27087 .06
27089 .062
27091 .069
27093 .078
27095 .105
27097 .09
27099 .055
27101 .039
27103 .061
27105 .045
27107 .051
27109 .055
27111 .063
27113 .056
27115 .091
27117 .053
27119 .044
27121 .064
27123 .074
27125 .067
27127 .061
27129 .064
27131 .075
27133 .051
27135 .05
27137 .082
27139 .068
27141 .081
27143 .065
27145 .068
27147 .077
27149 .043
27151 .066
27153 .075
27155 .062
27157 .071
27159 .088
27161 .07
27163 .068
27165 .075
27167 .047
27169 .07
27171 .082
27173 .051
28001 .08
28003 .113
28005 .086
28007 .118
28009 .126
28011 .09
28013 .097
28015 .098
28017 .132
28019 .113
28021 .15
28023 .1
28025 .178
28027 .111
28029 .099
28031 .077
28033 .072
28035 .077
28037 .09
28039 .1
28041 .099
28043 .11
28045 .075
28047 .072
28049 .079
28051 .166
28053 .102
28055 .092
28057 .096
28059 .08
28061 .102
28063 .155
28065 .106
28067 .071
28069 .103
28071 .069
28073 .066
28075 .087
28077 .102
28079 .087
28081 .098
28083 .116
28085 .088
28087 .102
28089 .063
28091 .101
28093 .112
28095 .137
28097 .127
28099 .084
28101 .079
28103 .176
28105 .08
28107 .119
28109 .083
28111 .104
28113 .098
28115 .087
28117 .115
28119 .111
28121 .056
28123 .059
28125 .09
28127 .082
28129 .082
28131 .072
28133 .118
28135 .099
28137 .103
28139 .125
28141 .101
28143 .13
28145 .088
28147 .103
28149 .091
28151 .113
28153 .094
28155 .135
28157 .101
28159 .151
28161 .129
28163 .105
29001 .065
29003 .076
29005 .079
29007 .092
29009 .081
29011 .117
29013 .108
29015 .093
29017 .088
29019 .062
29021 .087
29023 .08
29025 .086
29027 .08
29029 .079
29031 .069
29033 .098
29035 .087
29037 .097
29039 .086
29041 .105
29043 .08
29045 .113
29047 .086
29049 .087
29051 .067
29053 .084
29055 .107
29057 .101
29059 .094
29061 .087
29063 .093
29065 .094
29067 .098
29069 .111
29071 .115
29073 .108
29075 .068
29077 .083
29079 .069
29081 .078
29083 .096
29085 .123
29087 .071
29089 .083
29091 .092
29093 .087
29095 .109
29097 .084
29099 .106
29101 .08
29103 .059
29105 .11
29107 .09
29109 .078
29111 .083
29113 .113
29115 .103
29117 .078
29119 .07
29121 .079
29123 .098
29125 .087
29127 .089
29129 .079
29131 .106
29133 .097
29135 .078
29137 .11
29139 .103
29141 .113
29143 .089
29145 .079
29147 .059
29149 .09
29151 .099
29153 .076
29155 .121
29157 .072
29159 .081
29161 .071
29163 .083
29165 .08
29167 .089
29169 .068
29171 .074
29173 .08
29175 .094
29177 .083
29179 .127
29181 .095
yearmonth rate
1999-01 1.1591
1999-02 1.1203
1999-03 1.0886
1999-04 1.0701
1999-05 1.063
1999-06 1.0377
1999-07 1.037
1999-08 1.0605
1999-09 1.0497
1999-10 1.0706
1999-11 1.0328
1999-12 1.011
2000-01 1.0131
2000-02 0.9834
2000-03 0.9643
2000-04 0.9449
2000-05 0.9059
2000-06 0.9505
2000-07 0.9386
2000-08 0.9045
2000-09 0.8695
2000-10 0.8525
2000-11 0.8552
2000-12 0.8983
2001-01 0.9376
2001-02 0.9205
2001-03 0.9083
2001-04 0.8925
2001-05 0.8753
2001-06 0.853
2001-07 0.8615
2001-08 0.9014
2001-09 0.9114
2001-10 0.905
2001-11 0.8883
2001-12 0.8912
2002-01 0.8832
2002-02 0.8707
2002-03 0.8766
2002-04 0.886
2002-05 0.917
2002-06 0.9561
2002-07 0.9935
2002-08 0.9781
2002-09 0.9806
2002-10 0.9812
2002-11 1.0013
2002-12 1.0194
2003-01 1.0622
2003-02 1.0785
2003-03 1.0797
2003-04 1.0862
2003-05 1.1556
2003-06 1.1674
2003-07 1.1365
2003-08 1.1155
2003-09 1.1267
2003-10 1.1714
2003-11 1.171
2003-12 1.2298
2004-01 1.2638
2004-02 1.264
2004-03 1.2261
2004-04 1.1989
2004-05 1.2
2004-06 1.2146
2004-07 1.2266
2004-08 1.2191
2004-09 1.2224
2004-10 1.2507
2004-11 1.2997
2004-12 1.3406
2005-01 1.3123
2005-02 1.3013
2005-03 1.3185
2005-04 1.2943
2005-05 1.2697
2005-06 1.2155
2005-07 1.2041
2005-08 1.2295
2005-09 1.2234
2005-10 1.2022
2005-11 1.1789
2005-12 1.1861
2006-01 1.2126
2006-02 1.194
2006-03 1.2028
2006-04 1.2273
2006-05 1.2767
2006-06 1.2661
2006-07 1.2681
2006-08 1.281
2006-09 1.2722
2006-10 1.2617
2006-11 1.2888
2006-12 1.3205
2007-01 1.2993
2007-02 1.308
2007-03 1.3246
2007-04 1.3513
2007-05 1.3518
2007-06 1.3421
2007-07 1.3726
2007-08 1.3626
2007-09 1.391
2007-10 1.4233
2007-11 1.4683
2007-12 1.4559
2008-01 1.4728
2008-02 1.4759
2008-03 1.552
2008-04 1.5754
2008-05 1.5554
2008-06 1.5562
2008-07 1.5759
2008-08 1.4955
2008-09 1.4342
2008-10 1.3266
2008-11 1.2744
2008-12 1.3511
2009-01 1.3244
2009-02 1.2797
2009-03 1.305
2009-04 1.3199
2009-05 1.3646
2009-06 1.4014
2009-07 1.4092
2009-08 1.4266
2009-09 1.4575
2009-10 1.4821
2009-11 1.4908
2009-12 1.4579
2010-01 1.4266
2010-02 1.368
2010-03 1.357
2010-04 1.3417
2010-05 1.2563
2010-06 1.2223
2010-07 1.2811
2010-08 1.2903
2010-09 1.3103
2010-10 1.3901
2010-11 1.3654
2010-12 1.3221
2011-01 1.3371
2011-02 1.3656
2011-03 1.402
2011-04 1.446
2011-05 1.4335
2011-06 1.4403
2011-07 1.4275
2011-08 1.4333
2011-09 1.3747
2011-10 1.3732
2011-11 1.3558
2011-12 1.3155
2012-01 1.291
2012-02 1.3238
2012-03 1.3208
2012-04 1.316
2012-05 1.2806
2012-06 1.2541
2012-07 1.2278
2012-08 1.2406
2012-09 1.2885
2012-10 1.2974
2012-11 1.2837
2012-12 1.3119
2013-01 1.3304
2013-02 1.3347
2013-03 1.2953
2013-04 1.3025
2013-05 1.2983
2013-06 1.3197
2013-07 1.3088
2013-08 1.3314
2013-09 1.3364
2013-10 1.3646
2013-11 1.3491
2013-12 1.3708
2014-01 1.3624
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment