Home / Blog Menu ↓

Blog: #pedigree-charts

11 posts / tag feed / about the blog / archive / tags

Projects — Prints 2.6

We’ll group the projects together today.

Family pedigrees

An old-yet-new chart type: family pedigrees.


As you can see, it’s a little different from the initial design. This modern incarnation admittedly isn’t as pretty in some ways, but it’s a heck of a lot easier to lay out programmatically.

New things: It shows which child the line comes through, I added the lifespan right after each parent’s name, and I added indicators for the children showing how many kids they had (the dot) and how many marriages (the slash, though if they were married only once and had children, I left the marriage indicator off).

It also supports four generations, admittedly with less space and smaller type:


I tried it without the table borders, by the way. While it was more readable than I expected, it felt a little too loose and unmoored.

The input uses ArchieML and currently looks like this:


family: 1.1
marriage: 30 Dec 1829 in Polanco
father: José Antonio Fuentevilla Fuentevilla // 1809-1878
mother: Manuela Gándara Cobo // 1811-1879
  name: ? // 1830-1831

  name: Josefa // 1832-1834

  name: Francisca Maria // 1835-1843

  name: Maria Remedios // 1838-1898
  children: 6

  name: Maria Luisa // 1841-1916
  marriages: 1

  name: Manuel // 1845-

  name: < Maria Isabel // 1848-1928
  children: 9

  name: Maria Dolores // 1853-1853

  name: José Maria // 1858-1858

# --------------------------------------

family: 2.1
marriage: 29 Feb 1808 in Polanco
father: José Fuentevilla Piñera // 1779-1855
mother: Vicenta Manuela Fuentevilla Ruiz // 1787-1828
  name: < José Antonio // 1809-1878
  children: 9



Right now the family numbering is table-based (column, row), but eventually I think I probably want to make it hierarchical (somehow) so it’s easier to know which cell to put things in.

Timeline charts

Another new chart of sorts: timelines. I’ve been sorting through my Cuban lines and realized I needed some way to map out everybody so I could see the bigger picture.


The input is an ArchieML file that just lists events with dates and optional places:

title: Cuba timeline


event: Antonio Sánchez Rodríguez Díaz marries Ana Josefa Muñoz y Martínez Machado, possibly in El Calvario
daterange: 1790s-1800s

event: Agustin Sánchez Muñoz marries Ana Josefa Montoro, who then dies before 7 Feb 1835
daterange: 1790s-1830s

event: Rafaela Crispina Sánchez Muñoz born to Antonio Sánchez Rodríguez Díaz and Ana Josefa Muñoz y Martínez Machado
date: 1805 Oct 25
place: Matanzas City

event: Domingo Sánchez Muñoz born to Antonio Sánchez Rodríguez Díaz and Ana Josefa Muñoz y Martínez Machado
date: 1807 May 12
place: Matanzas City

event: Antonia Crispina Vargas Hernández is born to José Vargas and Gertrudis Hernández
daterange: 1800s
place: Güira de Melena, Mayabeque


If the date is a range, it’s italicized to show that it’s broader than a specific date.

(I originally was just going to use Google Docs for this, by the way, and made an initial prototype there. Having to do all the formatting manually got old, though, so I scripted it. Now I can just focus on the content.)

Family sheets update

I’ve got almost all the family sheet functionality ported to Node/JavaScript and cleaned up. (The sparklines code now uses tracks and markers in a way that is much more extensible and easier to work with.) In the process, I also revised the resolution (before, it just keyed off the year, but now it uses the month and day if present as well, so spacing is more accurate), added dotted-line support for date ranges (for birth and death), and added a marker for divorce (a skinny X):


Still have a number of bugs to fix, but it’s getting close.

Tabular pedigrees update

I ported the tabular pedigrees to Node/JavaScript and added support for seven-generation charts:


Comparison to the six-generation chart:


The shaded cells, by the way, indicate that I haven’t yet verified those people. Basically a TODO comment for myself.

Can’t wait till Chrome supports border stroke widths smaller than 1pt.

Quick links

Last and sort of least, I’m slowly putting together a page with quick links to the various Torre de’ Passeri civil registration scans on FamilySearch, to save myself some time. Planning to do this for the other localities I do research in as well.

Reply via email or office hours

Tabular pedigree chart

Lately I’ve found myself wanting to have local, paper copies of my genealogical research. As part of that, I wrote a script that takes input like this:

- Maria Isabel Fuentevilla Gándara | 1848 | ? | Polanco, Spain
-- José Antonio Fuentevilla Fuentevilla | 1809 | 1878 | Polanco, Spain
--- José Fuentevilla Piñera | 1779 | ? | Polanco, Spain
---- José Villa Oyuela | 1737 | 1803 | Polanco, Spain
----- Juan Antonio Villa Cacho | ? | ? | Polanco, Spain
------ Santiago Villa | 1687 | ? | Polanco, Spain
------ Maria Cacho
----- Rosa Maria Oyuela | ? | 1740 | Polanco, Spain
------ Damian Oyuela | ? | 1720 |
------ Josefa Rio
---- Rosa Piñera Pereda | 1747 | 1817 | Rumoroso, Spain
----- Juan Francisco Piñera Velo | ? | ? | Rumoroso, Spain
------ Juan Piñera | ? | ? | Arce, Spain
------ Francisca Velo | ? | ? | Arce, Spain
----- Maria Pereda Fuente | ? | ? | Rumoroso, Spain
------ Francisco Pereda | ? | ? | Rumoroso, Spain
------ Anna Fuente | ? | ? | Rumoroso, Spain

And turns it into what I’m calling a tabular pedigree chart:


It’s not glamorous by any means, and it’s still a work in progress, but it was super simple to implement with HTML tables and a bit of CSS. I print it to PDF from the browser. Overall, I’m fairly happy with it.

Reply via email or office hours

Sparkline pedigree chart

This proof of concept takes the genealogy sparklines idea and puts it on a pedigree chart:

The white diamond represents a marriage, and the small circles represent children. The length of the line corresponds to how long the person lived. (Also, the data is very made up.)

As I’m writing this, I’m thinking these sparklines might work better on a family group sheet instead of a pedigree chart.

Reply via email or office hours

Experimental family pedigree

This experiment takes the style introduced in January and uses it for a family pedigree (this time with real names and dates from my Italian side in Morrone del Sannio):

Three generations would have been better than four (mostly because of spacing). There’s also a bit of redundancy — people on the main lines show up twice, once as a child and once as a father/mother. Overall, though, I like being able to see the children of each family across multiple generations.

Reply via email or office hours

Experimental pedigree chart

Because I apparently can’t stop making genealogy charts: here’s a pedigree chart I put together as an experiment to see what things would look like if the more recent names were larger. The result:

I do like the larger names, but it seems that on the left side of the chart the hierarchy is harder to read. This kind of chart might work better with just four generations instead of six.

Reply via email or office hours

More pedigree charts

Building on the pedigree charts I released about a year ago, I’ve made a handful of new charts. For the four-generation chart, I’ve added one that has three to a page. I’ve also added five-generation and six-generation charts for people who like to write small:

Beyond that, I’ve got something sort of new that I’m calling a family chart. It’s similar to the family pedigree I mentioned when I released Emperor — a pedigree chart meets family group sheet hybrid:

There’s also a tabular version for when you don’t care as much about the relationships between families (if you’re just trying to figure out which kids go with which parents, for example):

And last but not least, a timeline, for mapping out chronological relationships and that sort of thing:

While I do love software, it’s hard to beat paper for stuff like this — paper lets you be messy. I’m finding myself doing a lot of my genealogy research on paper for just that reason. It’s more flexible. I seriously, seriously love paper.

Reply via email or office hours


When blogging about genealogy, it’s nice to be able to easily embed pedigree charts in your posts. I realized yesterday that it would be pretty easy to write a script to do just that. It’s called Emperor. Here’s a live demo:


* John Doe | b. 1850 ** Father: Richard Doe | ** Mother: Maria Taylor | b. 1825

The code

* John Doe | b. 1850 ** Father: Richard Doe | ** Mother: Maria Taylor | b. 1825


* Samuel Smith | 1823–1825 ** Nicholas Smith | 1800–1824 *** Frederick Smith | 1773–1812 *** Annabelle Hansen | b. 1770s? ** Irene Yolen | 1825–? *** Grandmother: Caroline Eastman | 1801–1899

The code

* Samuel Smith | 1823–1825 ** Nicholas Smith | 1800–1824 *** Frederick Smith | 1773–1812 *** Annabelle Hansen | b. 1770s? ** Irene Yolen | 1825–? *** Grandmother: Caroline Eastman | 1801–1899

Family pedigree

* Mark Goldman &
Evelyn Washburn | Jackie (b. 1935) ** Stephen Goldman &
Anne Rhys | Gary (b. 1899) | Ned (b. 1902) | Maggie (b. 1903) | Tanner (b. 1903) | Richard Goldman (b. 1908) | Mark Goldman (b. 1913) ** Robert Washburn &
Zanny Holdmann | Evelyn (b. 1915) | Lawrence (b. 1917)

The code

* Mark Goldman &
Evelyn Washburn | Jackie (b. 1935) ** Stephen Goldman &
Anne Rhys | Gary (b. 1899) | Ned (b. 1902) | Maggie (b. 1903) | Tanner (b. 1903) | Richard Goldman (b. 1908) | Mark Goldman (b. 1913) ** Robert Washburn &
Zanny Holdmann | Evelyn (b. 1915) | Lawrence (b. 1917)


If you’re reading this in a feed reader, it won’t look all that impressive. (That’s one of the downsides to doing it via Javascript instead of server-side.) Here’s an image showing what it looks like (from the sample page, included with the source):

The code (on Github) comes with instructions on using it. (Just upload the emperor.js file to your server, link to it in your head, and put your pedigree charts in a div with class="emperor-pedigree".) Oh, and you can style the pedigrees with CSS. There are still some issues to be resolved, but it’s fully armed and operational.

Reply via email or office hours

Pedigree charts

Genealogy on the computer is nice, but sometimes you just want to write things down on paper. I’ve put together some minimalist pedigree chart templates for that purpose (downloadable as PDFs).

Standard and 2x (since you usually don’t need all the space the standard chart gives you):

And landscape, if you need more horizontal space:


Reply via email or office hours

Pedigree chart sharing

I needed a web app to share pedigree charts with my sister on the other side of the country, so I wrote one. It’s called Pedigree, and all I have to do now is fill in the chart online, save it, and send the URL to my sister.

Here’s what the pedigree looks like:

You can put anything you want in the boxes, actually, which means you can do family pedigree charts that look like this:

Or you can make a chart listing each person’s occupation, or their age at death, or whatever else you want. It’s flexible.

Pedigree is still very much a work in progress — you can only do three-generation charts for now, and all pedigree charts are public to anyone who knows the URL, you need a Google Account to sign in, and the code isn’t very beautiful — but it’s a start.

Behind the scenes

I took those table-based pedigree charts I worked on a few years ago and wrote a Python program to automatically generate them, then expanded it into a Google App Engine app yesterday.

The Pedigree code is open source and is on Github. If anyone wants to help out, feel free to tackle any of the issues posted there. (I also feel compelled to add that the chart display algorithm isn’t particularly beautiful.)

I do plan to extend it eventually to take JSON or XML input so you can automatically generate a pedigree from another program, rather than having to type it in manually. And I want to come up with a better manual input method.

Reply via email or office hours

Pedigree chart using HTML5

Here’s a quick demo of a pedigree chart drawn using HTML5 Canvas:

HTML5 Pedigree Chart

The code was pretty much just thrown together; if I were to use this in an actual app, it’d be much cleaner. And for some reason it doesn’t quite work in Safari 4, so you’ll need to use Firefox 3.5.

As for next steps, I’m going to try to rewrite the demo using Processing.js. I’m also planning to extend it to allow panning (so you can have a huge pedigree chart onscreen — some of the Flash-based pedigrees out there do the same thing), and I’m itching to do some kind of genealogy demo ala Snow Stack (Safari only).

Reply via email or office hours