Fan chart with time scale

Here’s an idea for a new kind of fan chart: it has a time scale. Each person’s box is aligned with the time scale according to their date of birth. The colors distinguish the generations.

In this example, which is based on real data, I annotated the boxes with Ahnentafel numbers rather than names, but of course names would be better. (The center of the time scale is 2016 because that’s when I originally created this, as a Christmas gift for my sons. For them, I included a separate numbered list of ancestors with name, dates, and locations.)

I am person number 2. Although my wife (person number 3) and I are close in age, I am a later child of a couple who married when they were older, while she is an earlier child of a couple who married when they were younger; thus, my parents (4 and 5) were born in the same years as her paternal grandparents (12 and 13), while my wife and I were born within two years of each other.

That’s the reason for color-coding by generation, since the people in each generation aren’t aligned as they would be in a traditional fan chart. (I wanted to give my sons a visual sense of when each of their ancestors actually lived.) An alternative variation in the coloring scheme could indicate country of birth or some other bit of data.

Obviously, it only works if you have a birth date (or at least an estimated year of birth) for each person in the chart!

Maybe the same idea could also be applied to a descendant fan chart, but I haven’t thought about that much.

Does anyone else find this interesting or useful? If so, would anyone like to develop it in Gramps? I would be happy to test it. :slightly_smiling_face:


May be in 3D ?

1 Like

So when will you have the code written? :wink:


Just for curiosity, what do the start and end dates in each persons box indicate? I suspect the start is birth, but end cannot be death, since there would be overlaps with children…

Would not the end of the parents be the birth of the child? The child’s start line evenly spans both parents

Yes, the box ends at the birth of the child. (Of course, the couple may have other children before and/or after that time, but those children aren’t represented in a fan chart anyway.) There could even be a slight gap between a father and his child, if the father died before the child was born.

… but that’s not worth trying to represent!

Stunning. I want one.

Here’s a sample descendant chart with a time scale (I replaced the actual person names with relationships, for their privacy, and also to make it easier for you all to understand):


  • The color coding is by generation. People of the same color are either siblings or cousins of a certain degree, depending on what kinds of lines separate them.
  • Child 3 died in 2007; that’s where his line stops. (He married but had no children.)
  • Great-grandchildren 6.2.1 and 6.2.2 were twins who died within a few days of birth, so their lines are too short to be visible.
  • Great-grandchild 6.4.3 and Great-great-grandchild were recently born as of the date of this chart (July 2017), so their lines are also too short to be visible.
  • Spouses are not shown. I couldn’t think of how to include them.
  • Some of the children and grandchildren had multiple marriages, but that’s not apparent. That would further complicate the representation of spouses.

An interactive version could be very interesting. For example, people could appear or disappear as the time scale changes.


Wow, this is really intersting! @GeorgeWilmes what was your method for creating the first fan chart? Did you make it by hand in a graphical software, or did you use some plotting function and coding?
I guess it’s time to take a look at the gramps source code :smiley:

For both charts, I used LaTeX commands, especially from the PSTricks package. I used a spreadsheet to calculate the coordinates to put into the commands. I don’t know how Gramps creates its charts, but I hope it’s easier to code! :slightly_smiling_face:

1 Like

It would have to be coded in python using the Cairo graphics library.

1 Like

That’s a great chart! I can only imagine how much bigger the differences would have been with a few more generations. I have never used LaTeX before but have you published your code somewhere? I would love to try it with my ancestors.

Hi @Geneo, yes I will be happy to share the code, after I add more comments so that you can understand how to modify it for your data. Meanwhile, you will need to get something to process it. I use TeXShop on my Mac; I don’t know what to recommend for Linux or Windows. You can find documentation for the PSTricks package here.

While looking through my notes, I found another version of the chart in which the color saturation varies according to how long each person lived; people who reached age 100 or are still living get full saturation. (The height of the wedges only shows how old they were at the birth of their child, not how much longer they lived.) So for example, number 4 and 5 were born close to the same time, but number 5 lived much longer and therefore her color is more saturated. I liked the idea, but not the result; I’m just not very good at choosing color palettes. :slightly_frowning_face:


@GeorgeWilmes Thank you! I use Mac so in the meantime I will download TeXShop.

I like the idea of having an option to add that extra piece of information about the age! I’m just not sure how easy it is for a human eye to evaluate the saturation and then mentally translate it to lifespan. Perhaps it would be possible to visualise it in a different way (e.g. superimposing X’s or dots to represent each decade of life or adding a narrow arrow/triangle in the middle of each field that extends towards the centre until you reach the year in which that ancestor died)? The chart looks great with and without the saturation but I wonder if I’m the only one who would struggle with the mental conversion of saturation into years without a legend (and then you’d probably need a legend for each colour).

I agree, it’s difficult to make a static image convey so many details; being able to hover over a wedge or click on it to get more information would be much better.

1 Like

@PLegoux, sorry I did not reply sooner. I really like that 3D visualization! I have sometimes thought of another one, consisting of concentric cylinders. Each cross-section from top to bottom would represent a generation. The innermost rings would be siblings and closer cousins, which the outermost rings would be more distant cousins. Aunts, uncles, nieces, nephews, etc. could be found by navigating within it somehow. It is just a dream, I have no practical model of it.

1 Like