This variation of a bivariate area chart uses clipping to alternate colors. When New York is warmer than San Francisco, the difference between the two is filled in green. When San Francisco is warmer, the difference is filled in red. A similar technique was used by William Playfair all the way back in 1786.
-
-
Save bumbeishvili/082b3e2ab0b9b596d79878fda16b8122 to your computer and use it in GitHub Desktop.
Difference Chart
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
license: gpl-3.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
date | New York | San Francisco | |
---|---|---|---|
20111001 | 63.4 | 62.7 | |
20111002 | 58.0 | 59.9 | |
20111003 | 53.3 | 59.1 | |
20111004 | 55.7 | 58.8 | |
20111005 | 64.2 | 58.7 | |
20111006 | 58.8 | 57.0 | |
20111007 | 57.9 | 56.7 | |
20111008 | 61.8 | 56.8 | |
20111009 | 69.3 | 56.7 | |
20111010 | 71.2 | 60.1 | |
20111011 | 68.7 | 61.1 | |
20111012 | 61.8 | 61.5 | |
20111013 | 63.0 | 64.3 | |
20111014 | 66.9 | 67.1 | |
20111015 | 61.7 | 64.6 | |
20111016 | 61.8 | 61.6 | |
20111017 | 62.8 | 61.1 | |
20111018 | 60.8 | 59.2 | |
20111019 | 62.1 | 58.9 | |
20111020 | 65.1 | 57.2 | |
20111021 | 55.6 | 56.4 | |
20111022 | 54.4 | 60.7 | |
20111023 | 54.4 | 65.1 | |
20111024 | 54.8 | 60.9 | |
20111025 | 57.9 | 56.1 | |
20111026 | 54.6 | 54.6 | |
20111027 | 54.4 | 56.1 | |
20111028 | 42.5 | 58.1 | |
20111029 | 40.9 | 57.5 | |
20111030 | 38.6 | 57.7 | |
20111031 | 44.2 | 55.1 | |
20111101 | 49.6 | 57.9 | |
20111102 | 47.2 | 64.6 | |
20111103 | 50.1 | 56.2 | |
20111104 | 50.1 | 50.5 | |
20111105 | 43.5 | 51.3 | |
20111106 | 43.8 | 52.6 | |
20111107 | 48.9 | 51.4 | |
20111108 | 55.5 | 50.6 | |
20111109 | 53.7 | 54.6 | |
20111110 | 57.7 | 55.6 | |
20111111 | 48.5 | 53.9 | |
20111112 | 46.8 | 54.0 | |
20111113 | 51.1 | 53.8 | |
20111114 | 56.8 | 53.5 | |
20111115 | 59.7 | 53.4 | |
20111116 | 56.5 | 52.2 | |
20111117 | 49.6 | 52.7 | |
20111118 | 41.5 | 53.1 | |
20111119 | 44.3 | 49.0 | |
20111120 | 54.0 | 50.4 | |
20111121 | 54.1 | 51.1 | |
20111122 | 49.4 | 52.3 | |
20111123 | 50.0 | 54.6 | |
20111124 | 44.0 | 55.1 | |
20111125 | 50.3 | 51.5 | |
20111126 | 52.1 | 53.6 | |
20111127 | 49.6 | 52.3 | |
20111128 | 57.2 | 51.0 | |
20111129 | 59.1 | 49.5 | |
20111130 | 50.6 | 49.8 | |
20111201 | 44.3 | 60.4 | |
20111202 | 43.9 | 62.2 | |
20111203 | 42.1 | 58.3 | |
20111204 | 43.9 | 52.7 | |
20111205 | 50.2 | 51.5 | |
20111206 | 54.2 | 49.9 | |
20111207 | 54.6 | 48.6 | |
20111208 | 43.4 | 46.4 | |
20111209 | 42.2 | 49.8 | |
20111210 | 45.0 | 52.1 | |
20111211 | 33.8 | 48.8 | |
20111212 | 36.8 | 47.4 | |
20111213 | 38.6 | 47.2 | |
20111214 | 41.9 | 46.1 | |
20111215 | 49.6 | 48.8 | |
20111216 | 50.2 | 47.9 | |
20111217 | 40.6 | 49.8 | |
20111218 | 29.1 | 49.1 | |
20111219 | 33.7 | 48.3 | |
20111220 | 45.8 | 49.3 | |
20111221 | 47.4 | 48.4 | |
20111222 | 54.4 | 53.3 | |
20111223 | 47.8 | 47.5 | |
20111224 | 34.9 | 47.9 | |
20111225 | 35.9 | 48.9 | |
20111226 | 43.6 | 45.9 | |
20111227 | 42.9 | 47.2 | |
20111228 | 46.2 | 48.9 | |
20111229 | 30.8 | 50.9 | |
20111230 | 40.8 | 52.9 | |
20111231 | 49.8 | 50.1 | |
20120101 | 46.3 | 53.9 | |
20120102 | 43.2 | 53.1 | |
20120103 | 30.3 | 49.7 | |
20120104 | 19.2 | 52.7 | |
20120105 | 32.1 | 52.6 | |
20120106 | 41.2 | 49.0 | |
20120107 | 47.0 | 51.0 | |
20120108 | 46.0 | 56.8 | |
20120109 | 34.7 | 52.3 | |
20120110 | 39.4 | 51.6 | |
20120111 | 40.4 | 49.8 | |
20120112 | 45.4 | 51.9 | |
20120113 | 40.7 | 53.7 | |
20120114 | 30.4 | 52.9 | |
20120115 | 23.9 | 49.7 | |
20120116 | 22.6 | 45.3 | |
20120117 | 39.8 | 43.6 | |
20120118 | 43.2 | 45.0 | |
20120119 | 26.3 | 47.3 | |
20120120 | 32.8 | 51.4 | |
20120121 | 27.4 | 53.7 | |
20120122 | 25.0 | 48.3 | |
20120123 | 39.4 | 52.9 | |
20120124 | 48.7 | 49.1 | |
20120125 | 43.0 | 52.1 | |
20120126 | 37.1 | 53.6 | |
20120127 | 48.2 | 50.4 | |
20120128 | 43.7 | 50.3 | |
20120129 | 40.1 | 53.8 | |
20120130 | 38.0 | 51.9 | |
20120131 | 43.5 | 50.0 | |
20120201 | 50.4 | 50.0 | |
20120202 | 45.8 | 51.3 | |
20120203 | 37.5 | 51.5 | |
20120204 | 40.8 | 52.0 | |
20120205 | 36.5 | 53.8 | |
20120206 | 39.1 | 54.6 | |
20120207 | 43.2 | 54.3 | |
20120208 | 36.5 | 51.9 | |
20120209 | 36.5 | 53.8 | |
20120210 | 38.3 | 53.9 | |
20120211 | 36.9 | 52.3 | |
20120212 | 29.7 | 50.1 | |
20120213 | 33.1 | 49.5 | |
20120214 | 39.6 | 48.6 | |
20120215 | 42.3 | 49.9 | |
20120216 | 39.7 | 52.4 | |
20120217 | 46.0 | 49.9 | |
20120218 | 41.2 | 51.6 | |
20120219 | 39.8 | 47.8 | |
20120220 | 38.1 | 48.7 | |
20120221 | 37.1 | 49.7 | |
20120222 | 45.5 | 53.4 | |
20120223 | 50.6 | 54.1 | |
20120224 | 42.7 | 55.9 | |
20120225 | 42.6 | 51.7 | |
20120226 | 36.9 | 47.7 | |
20120227 | 40.9 | 45.4 | |
20120228 | 45.9 | 47.0 | |
20120229 | 40.7 | 49.8 | |
20120301 | 41.3 | 48.9 | |
20120302 | 36.8 | 48.1 | |
20120303 | 47.6 | 50.7 | |
20120304 | 44.2 | 55.0 | |
20120305 | 38.5 | 48.8 | |
20120306 | 32.9 | 48.4 | |
20120307 | 43.3 | 49.9 | |
20120308 | 51.2 | 49.2 | |
20120309 | 47.8 | 51.7 | |
20120310 | 37.2 | 49.3 | |
20120311 | 42.9 | 50.0 | |
20120312 | 48.8 | 48.6 | |
20120313 | 52.6 | 53.9 | |
20120314 | 60.5 | 55.2 | |
20120315 | 47.2 | 55.9 | |
20120316 | 44.7 | 54.6 | |
20120317 | 48.2 | 48.2 | |
20120318 | 48.2 | 47.1 | |
20120319 | 53.1 | 45.8 | |
20120320 | 57.8 | 49.7 | |
20120321 | 57.5 | 51.4 | |
20120322 | 57.3 | 51.4 | |
20120323 | 61.7 | 48.4 | |
20120324 | 55.8 | 49.0 | |
20120325 | 48.4 | 46.4 | |
20120326 | 49.8 | 49.7 | |
20120327 | 39.6 | 54.1 | |
20120328 | 49.7 | 54.6 | |
20120329 | 56.8 | 52.3 | |
20120330 | 46.5 | 54.5 | |
20120331 | 42.2 | 56.2 | |
20120401 | 45.3 | 51.1 | |
20120402 | 48.1 | 50.5 | |
20120403 | 51.2 | 52.2 | |
20120404 | 61.0 | 50.6 | |
20120405 | 50.7 | 47.9 | |
20120406 | 48.0 | 47.4 | |
20120407 | 51.1 | 49.4 | |
20120408 | 55.7 | 50.0 | |
20120409 | 58.3 | 51.3 | |
20120410 | 55.0 | 53.8 | |
20120411 | 49.0 | 52.9 | |
20120412 | 51.7 | 53.9 | |
20120413 | 53.1 | 50.2 | |
20120414 | 55.2 | 50.9 | |
20120415 | 62.3 | 51.5 | |
20120416 | 62.9 | 51.9 | |
20120417 | 69.3 | 53.2 | |
20120418 | 59.0 | 53.0 | |
20120419 | 54.1 | 55.1 | |
20120420 | 56.5 | 55.8 | |
20120421 | 58.2 | 58.0 | |
20120422 | 52.4 | 52.8 | |
20120423 | 51.6 | 55.1 | |
20120424 | 49.3 | 57.9 | |
20120425 | 52.5 | 57.5 | |
20120426 | 50.5 | 55.3 | |
20120427 | 51.9 | 53.5 | |
20120428 | 47.4 | 54.7 | |
20120429 | 54.1 | 54.0 | |
20120430 | 51.9 | 53.4 | |
20120501 | 57.4 | 52.7 | |
20120502 | 53.7 | 50.7 | |
20120503 | 53.1 | 52.6 | |
20120504 | 57.2 | 53.4 | |
20120505 | 57.0 | 53.1 | |
20120506 | 56.6 | 56.5 | |
20120507 | 54.6 | 55.3 | |
20120508 | 57.9 | 52.0 | |
20120509 | 59.2 | 52.4 | |
20120510 | 61.1 | 53.4 | |
20120511 | 59.7 | 53.1 | |
20120512 | 64.1 | 49.9 | |
20120513 | 65.3 | 52.0 | |
20120514 | 64.2 | 56.0 | |
20120515 | 62.0 | 53.0 | |
20120516 | 63.8 | 51.0 | |
20120517 | 64.5 | 51.4 | |
20120518 | 61.0 | 52.2 | |
20120519 | 62.6 | 52.4 | |
20120520 | 66.2 | 54.5 | |
20120521 | 62.7 | 52.8 | |
20120522 | 63.7 | 53.9 | |
20120523 | 66.4 | 56.5 | |
20120524 | 64.5 | 54.7 | |
20120525 | 65.4 | 52.5 | |
20120526 | 69.4 | 52.1 | |
20120527 | 71.9 | 52.2 | |
20120528 | 74.4 | 52.9 | |
20120529 | 75.9 | 52.1 | |
20120530 | 72.9 | 52.1 | |
20120531 | 72.5 | 53.3 | |
20120601 | 67.2 | 54.8 | |
20120602 | 68.3 | 54.0 | |
20120603 | 67.7 | 52.3 | |
20120604 | 61.9 | 55.3 | |
20120605 | 58.3 | 53.5 | |
20120606 | 61.7 | 54.1 | |
20120607 | 66.7 | 53.9 | |
20120608 | 68.7 | 54.4 | |
20120609 | 72.2 | 55.0 | |
20120610 | 72.6 | 60.0 | |
20120611 | 69.2 | 57.2 | |
20120612 | 66.9 | 55.1 | |
20120613 | 66.7 | 53.3 | |
20120614 | 67.7 | 53.4 | |
20120615 | 68.5 | 54.6 | |
20120616 | 67.5 | 57.0 | |
20120617 | 64.2 | 55.6 | |
20120618 | 61.7 | 52.5 | |
20120619 | 66.4 | 53.9 | |
20120620 | 77.9 | 55.3 | |
20120621 | 88.3 | 53.3 | |
20120622 | 82.2 | 54.1 | |
20120623 | 77.0 | 55.2 | |
20120624 | 75.4 | 55.8 | |
20120625 | 70.9 | 56.8 | |
20120626 | 65.9 | 57.5 | |
20120627 | 73.5 | 57.7 | |
20120628 | 77.4 | 56.6 | |
20120629 | 79.6 | 56.4 | |
20120630 | 84.2 | 58.4 | |
20120701 | 81.8 | 58.8 | |
20120702 | 82.5 | 56.4 | |
20120703 | 80.2 | 56.5 | |
20120704 | 77.8 | 55.8 | |
20120705 | 86.1 | 54.8 | |
20120706 | 79.9 | 54.9 | |
20120707 | 83.5 | 54.7 | |
20120708 | 81.5 | 52.8 | |
20120709 | 77.8 | 53.7 | |
20120710 | 76.1 | 53.1 | |
20120711 | 76.3 | 52.7 | |
20120712 | 75.8 | 52.0 | |
20120713 | 77.2 | 53.4 | |
20120714 | 79.3 | 54.0 | |
20120715 | 78.9 | 54.0 | |
20120716 | 79.6 | 54.5 | |
20120717 | 83.3 | 56.7 | |
20120718 | 84.3 | 57.5 | |
20120719 | 75.1 | 57.1 | |
20120720 | 68.4 | 58.1 | |
20120721 | 68.4 | 57.6 | |
20120722 | 72.2 | 56.0 | |
20120723 | 75.6 | 56.6 | |
20120724 | 82.6 | 57.8 | |
20120725 | 78.4 | 57.5 | |
20120726 | 77.0 | 56.4 | |
20120727 | 79.4 | 55.3 | |
20120728 | 77.4 | 55.0 | |
20120729 | 72.5 | 55.6 | |
20120730 | 72.9 | 55.6 | |
20120731 | 73.6 | 55.9 | |
20120801 | 75.0 | 55.4 | |
20120802 | 77.7 | 54.4 | |
20120803 | 79.7 | 53.7 | |
20120804 | 79.6 | 54.1 | |
20120805 | 81.5 | 57.8 | |
20120806 | 80.0 | 58.2 | |
20120807 | 75.7 | 58.0 | |
20120808 | 77.8 | 57.0 | |
20120809 | 78.6 | 55.0 | |
20120810 | 77.8 | 54.8 | |
20120811 | 78.5 | 53.0 | |
20120812 | 78.8 | 52.5 | |
20120813 | 78.6 | 53.3 | |
20120814 | 76.8 | 53.9 | |
20120815 | 76.7 | 56.2 | |
20120816 | 75.9 | 57.1 | |
20120817 | 77.6 | 55.3 | |
20120818 | 72.6 | 56.2 | |
20120819 | 70.4 | 54.3 | |
20120820 | 71.8 | 53.1 | |
20120821 | 73.6 | 53.4 | |
20120822 | 74.7 | 54.5 | |
20120823 | 74.6 | 55.7 | |
20120824 | 76.0 | 54.8 | |
20120825 | 76.2 | 53.8 | |
20120826 | 73.4 | 56.5 | |
20120827 | 74.6 | 58.3 | |
20120828 | 79.4 | 58.7 | |
20120829 | 74.7 | 57.5 | |
20120830 | 73.5 | 55.9 | |
20120831 | 77.9 | 55.4 | |
20120901 | 80.7 | 55.7 | |
20120902 | 75.1 | 53.1 | |
20120903 | 73.5 | 53.5 | |
20120904 | 73.5 | 52.5 | |
20120905 | 77.7 | 54.5 | |
20120906 | 74.2 | 56.3 | |
20120907 | 76.0 | 56.4 | |
20120908 | 77.1 | 56.5 | |
20120909 | 69.7 | 56.4 | |
20120910 | 67.8 | 55.4 | |
20120911 | 64.0 | 56.2 | |
20120912 | 68.1 | 55.7 | |
20120913 | 69.3 | 54.3 | |
20120914 | 70.0 | 55.2 | |
20120915 | 69.3 | 54.3 | |
20120916 | 66.3 | 52.9 | |
20120917 | 67.0 | 54.8 | |
20120918 | 72.8 | 54.8 | |
20120919 | 67.2 | 56.8 | |
20120920 | 62.1 | 55.4 | |
20120921 | 64.0 | 55.8 | |
20120922 | 65.5 | 55.9 | |
20120923 | 65.7 | 52.8 | |
20120924 | 60.4 | 54.5 | |
20120925 | 63.2 | 53.3 | |
20120926 | 68.5 | 53.6 | |
20120927 | 69.2 | 52.1 | |
20120928 | 68.7 | 52.6 | |
20120929 | 62.5 | 53.9 | |
20120930 | 62.3 | 55.1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style> | |
body { | |
font: 10px sans-serif; | |
} | |
.axis path, | |
.axis line { | |
fill: none; | |
stroke: #000; | |
shape-rendering: crispEdges; | |
} | |
.x.axis path { | |
display: none; | |
} | |
.area.above { | |
fill: rgb(252,141,89); | |
} | |
.area.below { | |
fill: rgb(145,207,96); | |
} | |
.line { | |
fill: none; | |
stroke: #000; | |
stroke-width: 1.5px; | |
} | |
</style> | |
<body> | |
<script src="//d3js.org/d3.v3.min.js"></script> | |
<script> | |
var margin = {top: 20, right: 20, bottom: 30, left: 50}, | |
width = 960 - margin.left - margin.right, | |
height = 500 - margin.top - margin.bottom; | |
var parseDate = d3.time.format("%Y%m%d").parse; | |
var x = d3.time.scale() | |
.range([0, width]); | |
var y = d3.scale.linear() | |
.range([height, 0]); | |
var xAxis = d3.svg.axis() | |
.scale(x) | |
.orient("bottom"); | |
var yAxis = d3.svg.axis() | |
.scale(y) | |
.orient("left"); | |
var line = d3.svg.area() | |
.interpolate("basis") | |
.x(function(d) { return x(d.date); }) | |
.y(function(d) { return y(d["New York"]); }); | |
var area = d3.svg.area() | |
.interpolate("basis") | |
.x(function(d) { return x(d.date); }) | |
.y1(function(d) { return y(d["New York"]); }); | |
var svg = d3.select("body").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 + ")"); | |
d3.tsv("data.tsv", function(error, data) { | |
if (error) throw error; | |
data.forEach(function(d) { | |
d.date = parseDate(d.date); | |
d["New York"]= +d["New York"]; | |
d["San Francisco"] = +d["San Francisco"]; | |
}); | |
x.domain(d3.extent(data, function(d) { return d.date; })); | |
y.domain([ | |
d3.min(data, function(d) { return Math.min(d["New York"], d["San Francisco"]); }), | |
d3.max(data, function(d) { return Math.max(d["New York"], d["San Francisco"]); }) | |
]); | |
svg.datum(data); | |
svg.append("clipPath") | |
.attr("id", "clip-below") | |
.append("path") | |
.attr("d", area.y0(height)); | |
svg.append("clipPath") | |
.attr("id", "clip-above") | |
.append("path") | |
.attr("d", area.y0(0)); | |
svg.append("path") | |
.attr("class", "area above") | |
.attr("clip-path", "url(#clip-above)") | |
.attr("d", area.y0(function(d) { return y(d["San Francisco"]); })); | |
svg.append("path") | |
.attr("class", "area below") | |
.attr("clip-path", "url(#clip-below)") | |
.attr("d", area); | |
svg.append("path") | |
.attr("class", "line") | |
.attr("d", line); | |
svg.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + height + ")") | |
.call(xAxis); | |
svg.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("Temperature (ºF)"); | |
}); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment