Skip to content

Instantly share code, notes, and snippets.

View emeeks's full-sized avatar

Elijah Meeks emeeks

View GitHub Profile
@emeeks
emeeks / art_movements.json
Last active March 16, 2016 15:46
Hierarchical Timeline Visualization
{
"label": "Art Movements",
"children": [
{"label": "Renaissance",
"children": [
{"label": "Italian Renaissance",
"start": 1275,
"end": 1602},
{"label": "Renaissance Classicism",
"start": 1475,
@emeeks
emeeks / d3.layout.timeline.js
Last active June 19, 2023 20:42
d3.layout.timeline categorized timelines
(function() {
d3.layout.timeline = function() {
var timelines = [];
var dateAccessor = function (d) {return new Date(d)};
var processedTimelines = [];
var startAccessor = function (d) {return d.start};
var endAccessor = function (d) {return d.end};
var size = [500,100];
var timelineExtent = [-Infinity, Infinity];
var setExtent = [];
@emeeks
emeeks / d3.layout.timeline.js
Last active March 11, 2024 01:28
d3.layout.timeline with dates
(function() {
d3.layout.timeline = function() {
var timelines = [];
var dateAccessor = function (d) {return new Date(d)};
var processedTimelines = [];
var startAccessor = function (d) {return d.start};
var endAccessor = function (d) {return d.end};
var size = [500,100];
var timelineExtent = [-Infinity, Infinity];
var setExtent = [];
@emeeks
emeeks / d3.layout.timeline.js
Last active March 16, 2016 15:47
d3.layout.timeline with procedurally generated data
(function() {
d3.layout.timeline = function() {
var timelines = [];
var dateAccessor = function (d) {return new Date(d)};
var processedTimelines = [];
var startAccessor = function (d) {return d.start};
var endAccessor = function (d) {return d.end};
var size = [500,100];
var timelineExtent = [-Infinity, Infinity];
var setExtent = [];
@emeeks
emeeks / d3.layout.timeline.js
Last active March 16, 2016 15:47
Simple d3.layout.timeline
(function() {
d3.layout.timeline = function() {
var timelines = [];
var dateAccessor = function (d) {return new Date(d)};
var processedTimelines = [];
var startAccessor = function (d) {return d.start};
var endAccessor = function (d) {return d.end};
var size = [500,100];
var timelineExtent = [-Infinity, Infinity];
var setExtent = [];
@emeeks
emeeks / README.md
Last active March 16, 2016 15:48
Napoleon's March with d3.svg.ribbon

An example of d3.svg.ribbon using Napoleon's March through Russia made famous by Minard's map. Dataset comes from Ben Schmidt's use of it in his excellent d3.trail layout.

The pattern for using d3.svg.ribbon with geodata is simply to factor the projection into the accessors:

projection = d3.geo.equirectangular().translate([-3300,7800]).scale(8000);
sizeScale = d3.scale.linear().domain([6000,340000]).range([1,10])

ribbon = d3.svg.ribbon()
 .x(function(d) {return projection([d.lon, d.lat])[0]})
@emeeks
emeeks / README.md
Last active March 16, 2016 15:48
d3.svg.ribbon example

An example of d3.svg.ribbon.

Drag the circles to see the underlying single svg:path element re-interpolated based on the changing position of the points and their radii that are used to generate it. This is a different way of generating areas than d3.svg.area and might prove more suitable for some applications.

@emeeks
emeeks / d3.sketchy.js
Last active July 20, 2023 17:19
Sketchy World
/*global d3:false */
/*jshint unused:false*/
/**
* Initiate the sketchy library
* @constructor
*/
var d3sketchy = function(){
/**
@emeeks
emeeks / d3.sketchy.js
Last active October 12, 2017 06:35
Sketchy Network II
/*global d3:false */
/*jshint unused:false*/
/**
* Initiate the sketchy library
* @constructor
*/
var d3sketchy = function(){
/**
@emeeks
emeeks / index.html
Last active April 12, 2018 09:31
Cheap Sketchy Functions
<html>
<head>
<title>Cheap Sketchy</title>
<meta charset="utf-8" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.16/d3.min.js" charset="utf-8" type="text/javascript"></script>
</head>
<style>
svg {
height: 500px;
width: 500px;