Skip to content

Instantly share code, notes, and snippets.

@mbostock
Last active Oct 28, 2016
Embed
What would you like to do?
One System, Every Kepler Planet
license: gpl-3.0
<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
background: #222;
}
.system {
display: inline-block;
position: relative;
vertical-align: middle;
}
.orbit {
fill: none;
stroke: #ccc;
stroke-dasharray: 2,3;
}
.planet {
position: absolute;
top: 0;
left: 0;
-moz-animation-name: rotate;
-moz-animation-iteration-count: infinite;
-moz-animation-timing-function: linear;
-webkit-animation-name: rotate;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
animation-name: rotate;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.planet circle {
fill: url(#planet-gradient);
}
@-moz-keyframes rotate {
from { -moz-transform: rotateZ(0deg); }
to { -moz-transform: rotateZ(-360deg); }
}
@-webkit-keyframes rotate {
from { -webkit-transform: rotateZ(0deg); }
to { -webkit-transform: rotateZ(-360deg); }
}
@keyframes rotate {
from { transform: rotateZ(0deg); }
to { transform: rotateZ(-360deg); }
}
</style>
<div class="system">
<svg style="position:absolute;width:0;height:0;">
<defs>
<radialGradient id="planet-gradient" gradientUnits="objectBoundingBox" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#aaa" stop-opacity="1"/>
<stop offset="100%" stop-color="#777" stop-opacity="1"/>
</radialGradient>
</defs>
</svg>
</div>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
// Scales for semimajor axis, planet radius, and planet period.
var x = d3.scale.linear().range([0, 400]),
r = d3.scale.linear().domain([4, 40]).range([4 * .5, 40 * .5]).clamp(true),
t = d3.scale.linear().range([0, 1]);
var padding = 16,
width = 960,
height = 500;
// Detect the appropriate vendor prefix.
var prefix = "-webkit-transform" in document.body.style ? "-webkit-"
: "-moz-transform" in document.body.style ? "-moz-"
: "";
d3.csv("planets.csv", type, function(error, planets) {
d3.select(".system")
.style("width", width + "px")
.style("height", height + "px")
.selectAll(".planet")
.data(planets.sort(function(a, b) { return b.planet_radius - a.planet_radius; }))
.enter().append("svg")
.attr("class", "planet")
.attr("width", width)
.attr("height", height)
.style(prefix + "animation-duration", function(d) { return t(d.period) + "s"; })
.style(prefix + "transform-origin", width / 2 + "px " + height / 2 + "px")
.append("circle")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")
.attr("cx", function(d) { return x(d.semimajor_axis); })
.attr("r", function(d) { return r(d.planet_radius); });
});
function type(d) {
d.period = +d.period;
d.planet_radius = +d.planet_radius;
d.semimajor_axis = +d.semimajor_axis;
d.stellar_radius = +d.stellar_radius;
return d;
}
</script>
period planet_radius semimajor_axis stellar_radius stellar_teff id planet_name
0.45299999999999996 3.1899999999999999 0.01 0.68099999999999994 4188.0 42 c
0.74299999999999999 0.85999999999999999 0.013000000000000001 0.52400000000000002 4061.0 32 f
0.83700000000000008 1.3799999999999999 0.017000000000000001 1.0 5627.0 10 b
1.214 3.46 0.019 0.68099999999999994 4188.0 42 b
1.865 3.0800000000000001 0.025000000000000001 0.68099999999999994 4188.0 42 d
1.486 14.82 0.026000000000000002 1.048 5787.0 17 b
1.5930000000000002 1.6699999999999999 0.027000000000000003 1.012 5777.0 9 d
2.4550000000000001 9.8499999999999996 0.028999999999999998 0.53100000000000003 4098.0 45 b
1.8559999999999999 9.4000000000000004 0.028999999999999998 0.89000000000000001 5731.0 41 b
2.8960000000000004 1.1100000000000001 0.033000000000000002 0.52400000000000002 4061.0 32 e
2.4710000000000001 14.4 0.036000000000000004 1.0600000000000001 5814.0 1 b
1.764 23.0 0.037999999999999999 2.7000000000000002 9071.0 13 b
2.2050000000000001 22.300000000000001 0.039 2.71 6264.0 2 b
3.2469999999999999 7.0999999999999996 0.040000000000000001 0.87 5442.0 44 b
2.786 1.72 0.042999999999999997 2.04 6131.0 21 b
3.214 3.7200000000000002 0.044000000000000004 1.27 5858.0 4 b
3.5049999999999999 1.8200000000000001 0.044000000000000004 0.97799999999999998 5385.0 18 b
3.0239999999999996 10.56 0.044000000000000004 1.2009999999999998 6082.0 43 b
3.6960000000000002 1.97 0.044999999999999998 0.93900000000000006 5443.0 20 b
3.2349999999999999 11.07 0.044999999999999998 1.0820000000000001 5826.0 6 b
3.9049999999999998 11.699999999999999 0.047 0.81999999999999995 5595.0 71 b
3.5219999999999998 15.9 0.047 1.5600000000000001 6025.0 8 b
3.548 17.399999999999999 0.052000000000000005 2.02 6297.0 5 b
4.8879999999999999 4.6799999999999997 0.052000000000000005 0.74199999999999999 4766.0 3 b
5.9009999999999998 2.1499999999999999 0.052000000000000005 0.52400000000000002 4061.0 32 b
4.7780000000000005 2.1400000000000001 0.052999999999999999 0.88800000000000001 5190.0 48 b
5.7149320000000001 0.018800000000000001 0.055300000000000002 0.63 5555.0 62 b
4.4379999999999997 17.600000000000001 0.055999999999999994 1.3799999999999999 6011.0 12 b
5.9120000000000008 2.1699999999999999 0.055999999999999994 0.63800000000000001 4663.0 28 b
4.9430000000000005 11.970000000000001 0.059000000000000004 1.0900000000000001 5786.0 15 b
5.7290000000000001 2.23 0.059000000000000004 0.73999999999999999 5294.0 57 b
7.2039999999999997 2.71 0.059999999999999998 0.52500000000000002 4069.0 49 b
4.8849999999999998 16.100000000000001 0.060999999999999999 1.78 5934.0 7 b
5.399 2.5299999999999998 0.062 1.242 5793.0 68 b
6.0979999999999999 0.91000000000000003 0.063 0.93900000000000006 5443.0 20 e
8.011000000000001 2.0899999999999999 0.063 0.498 3855.0 54 b
242.46129999999999 1.71 0.064000000000000001 0.93000000000000005 5638.0 69 c
7.8770000000000007 2.21 0.065000000000000002 0.54799999999999993 4222.0 52 b
8.7520000000000007 1.99 0.068000000000000005 0.52400000000000002 4061.0 32 c
5.6679999999999993 1.8300000000000001 0.068000000000000005 1.8200000000000001 5904.0 33 b
6.2389999999999999 3.3999999999999999 0.070000000000000007 1.6599999999999999 6103.0 25 b
6.8729999999999993 7.0 0.07400000000000001 1.0700000000000001 6354.0 40 b
8.9860000000000007 2.02 0.07400000000000001 0.63800000000000001 4663.0 28 c
7.6420000000000003 4.75 0.074999999999999997 0.97799999999999998 5385.0 18 c
7.1320000000000006 2.2000000000000002 0.074999999999999997 1.47 6180.0 60 b
7.1070000000000002 1.95 0.076999999999999999 1.8700000000000001 6142.0 23 b
6.79 10.0 0.078 1.6299999999999999 6395.0 14 b
10.913 2.54 0.079000000000000001 0.52500000000000002 4069.0 49 c
8.1449999999999996 2.7999999999999998 0.080000000000000002 1.1200000000000001 6043.0 24 b
7.8129999999999997 2.2000000000000002 0.08199999999999999 1.8799999999999999 6058.0 50 b
12.072000000000001 1.23 0.083000000000000004 0.498 3855.0 54 c
9.2870000000000008 2.5299999999999998 0.084000000000000005 0.85699999999999998 5541.0 19 b
9.6739999999999995 3.1499999999999999 0.085000000000000006 0.88800000000000001 5190.0 48 c
8.9190000000000005 2.3999999999999999 0.086999999999999994 1.47 6180.0 60 c
12.282999999999999 3.0800000000000001 0.089999999999999997 0.57700000000000007 4486.0 26 b
9.6050000000000004 1.1100000000000001 0.090999999999999998 1.242 5793.0 68 c
10.300000000000001 1.72 0.091999999999999998 1.0600000000000001 5685.0 11 b
12.441700000000001 0.0077000000000000002 0.092899999999999996 0.63 5555.0 62 c
10.218999999999999 2.6000000000000001 0.093000000000000013 1.0900000000000001 6082.0 58 b
10.854000000000001 3.1699999999999999 0.093000000000000013 0.93900000000000006 5443.0 20 c
9.3759999999999994 2.79 0.093000000000000013 1.8799999999999999 6058.0 50 c
10.337999999999999 3.7999999999999998 0.094 0.92000000000000004 5966.0 29 b
13.722341 2.2400000000000002 0.094 0.93000000000000005 5638.0 69 b
11.609000000000002 1.5800000000000001 0.095000000000000001 0.73999999999999999 5294.0 57 c
13.367000000000001 0.34000000000000002 0.10000000000000001 0.72799999999999998 5288.0 37 b
10.742000000000001 3.6899999999999999 0.10099999999999999 1.8700000000000001 6142.0 23 c
10.503 3.8399999999999999 0.10400000000000001 3.1400000000000001 4931.0 56 b
16.385000000000002 1.9299999999999999 0.105 0.54799999999999993 4222.0 52 c
12.334000000000001 2.8999999999999999 0.105 1.1200000000000001 6043.0 24 c
11.868 1.23 0.106 1.0600000000000001 6314.0 59 b
11.902000000000001 2.5 0.106 1.47 6180.0 60 d
13.025 2.8999999999999999 0.10800000000000001 1.0600000000000001 5685.0 11 c
13.289999999999999 3.5 0.111 0.92000000000000004 5966.0 29 c
17.250999999999998 2.9399999999999999 0.11199999999999999 0.57700000000000007 4486.0 26 c
12.720000000000001 6.5099999999999998 0.113 1.6599999999999999 6103.0 25 c
13.849 1.21 0.11599999999999999 1.6100000000000001 5973.0 36 b
14.859000000000002 6.0099999999999998 0.11599999999999999 0.97799999999999998 5385.0 18 d
13.175999999999998 3.4399999999999999 0.11900000000000001 1.8200000000000001 5904.0 33 c
18.164059999999999 0.027799999999999998 0.12 0.63 5555.0 62 d
15.335000000000001 5.7199999999999998 0.121 0.91900000000000004 5399.0 27 b
15.574000000000002 2.6000000000000001 0.124 1.0900000000000001 6082.0 58 c
22.780999999999999 2.4900000000000002 0.129 0.52400000000000002 4061.0 32 d
16.230999999999998 3.4399999999999999 0.129 1.6100000000000001 5973.0 36 c
21.302 0.75 0.13699999999999998 0.72799999999999998 5288.0 37 c
19.577000000000002 1.03 0.13699999999999998 0.93900000000000006 5443.0 20 f
17.98 2.2200000000000002 0.14000000000000001 1.0600000000000001 6314.0 59 c
18.649000000000001 3.1000000000000001 0.14099999999999999 0.96999999999999997 6086.0 53 b
19.274000000000001 8.2799999999999994 0.14300000000000002 1.012 5777.0 9 b
27.954000000000001 1.5600000000000001 0.155 0.60199999999999998 4509.0 55 b
21.087 9.8000000000000007 0.155 1.04 6225.0 39 b
22.686999999999998 3.2000000000000002 0.156 1.0600000000000001 5685.0 11 d
20.861000000000001 5.7000000000000002 0.158 1.1499999999999999 6514.0 31 b
21.776 5.7300000000000004 0.16600000000000001 1.8200000000000001 5904.0 33 d
21.405000000000001 7.8600000000000003 0.16699999999999998 3.1400000000000001 4931.0 56 c
29.164000000000001 2.1099999999999999 0.184 0.93999999999999995 5461.0 30 b
33.601999999999997 7.2000000000000002 0.191 0.76000000000000001 5289.0 46 b
31.331 7.3399999999999999 0.19399999999999998 0.91900000000000004 5399.0 27 c
31.995000000000001 4.1799999999999997 0.19600000000000001 1.0600000000000001 5685.0 11 e
42.143000000000001 1.77 0.20300000000000001 0.60199999999999998 4509.0 55 c
39.792000000000002 2.0 0.20800000000000002 0.72799999999999998 5288.0 37 d
31.785 4.25 0.214 1.8200000000000001 5904.0 33 e
38.558 3.5 0.22800000000000001 0.96999999999999997 6086.0 53 c
38.906999999999996 8.2200000000000006 0.22899999999999998 1.012 5777.0 9 c
45.293999999999997 2.2000000000000002 0.24100000000000002 1.0 5627.0 10 c
46.686000000000007 2.4300000000000002 0.252 1.0600000000000001 5685.0 11 f
45.156000000000006 7.2999999999999998 0.252 0.93999999999999995 6018.0 51 b
41.027999999999999 4.7999999999999998 0.254 1.8200000000000001 5904.0 33 f
42.631999999999998 5.2999999999999998 0.254 1.1499999999999999 6514.0 31 c
49.513999999999996 2.98 0.29559999999999997 0.96400000000000008 5636.0 47 b
60.323 13.199999999999999 0.29799999999999999 0.93999999999999995 5461.0 30 c
77.611999999999995 2.8399999999999999 0.34399999999999997 0.93900000000000006 5443.0 20 d
85.312999999999988 5.9000000000000004 0.38500000000000001 0.93999999999999995 6018.0 51 c
87.96899999999998 0.38300000000000001 0.38709893000000001 1.0 5777.0 999 Mercury
122.3874 0.023199999999999998 0.42700000000000005 0.63 5555.0 62 e
118.37799999999999 3.3799999999999999 0.46899999999999997 1.0600000000000001 5685.0 11 g
143.21299999999999 9.5299999999999994 0.53000000000000003 0.93999999999999995 5461.0 30 d
131.458 8.1600000000000001 0.60346999999999995 1.0284 5606.0 35 b
228.77599999999998 8.4499999999999993 0.70479999999999998 0.64890000000000003 4450.0 16 b
267.291 0.020299999999999999 0.71799999999999997 0.63 5555.0 62 f
224.70099999999999 0.94899999999999995 0.72333199000000004 1.0 5777.0 999 Venus
289.86200000000002 2.1000000000000001 0.80500000000000005 0.84999999999999998 5510.0 22 b
303.15800000000002 4.6100000000000003 0.9890000000000001 0.96400000000000008 5636.0 47 c
365.25599999999997 1.0 1.0 1.0 5777.0 999 Earth
288.822 8.5600000000000005 1.1617999999999999 1.1617999999999999 5913.0 34 b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment