<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>#ancestor-line-charts posts — Ben Crowder</title>
    <link>https://bencrowder.net/blog/tag/ancestor-line-charts/</link>
    <atom:link href="https://bencrowder.net/blog/tag/ancestor-line-charts/feed/" rel="self" />
    <description>Feed for blog posts tagged with #ancestor-line-charts.</description>
    <lastBuildDate>Thu, 12 Mar 2026 19:45:41 GMT</lastBuildDate>
    <language>en-US</language>
    <generator>https://bencrowder.net/</generator>

    <item>
      <title>It took me a while to get around to this, but I’ve finally posted the code for tabular pedigrees, fa...</title>
      <link>https://bencrowder.net/blog/2023/1563/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2023/1563/</guid>
      <pubDate>Tue, 22 Aug 2023 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>It took me a while to get around to this, but I’ve finally posted the code for <a href="https://bencrowder.net/tabular-pedigrees/">tabular pedigrees</a>, <a href="https://bencrowder.net/family-pedigrees/">family pedigrees</a>, and <a href="https://bencrowder.net/family-sheets/">family sheets</a> (which includes ancestor line charts and family sparklines).</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20It took me a while to get around to this, but I’ve finally posted the code for tabular pedigrees, fa...">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>I’ve been doing a lot of genealogy lately, and as part of that I’ve been refining the family sheets...</title>
      <link>https://bencrowder.net/blog/2022/1338/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2022/1338/</guid>
      <pubDate>Sun, 17 Jul 2022 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>I’ve been doing a lot of genealogy lately, and as part of that I’ve been refining the family sheets I mentioned last time:</p>
<p><figure class="border">
        <a href="https://cdn.bencrowder.net/blog/2022/07/na-0003.png"><img src="https://cdn.bencrowder.net/blog/2022/07/na-0003.png" alt="https://cdn.bencrowder.net/blog/2022/07/na-0003.png" title="https://cdn.bencrowder.net/blog/2022/07/na-0003.png" /></a>
        
      </figure></p>
<h3 id="ancestorlinechart">Ancestor line chart</h3>
<p>The main new thing is the ancestor line chart in the upper right, showing where the family is on my line in relation to me, with fathers on the left and mothers on the right. (So this family is my mother’s mother’s mother’s father’s father’s parents.) Each person’s initial is in the circle.</p>
<p>For collateral lines, it looks like this:</p>
<p><figure class="border">
        <a href="https://cdn.bencrowder.net/blog/2022/07/se-c-0001.png"><img src="https://cdn.bencrowder.net/blog/2022/07/se-c-0001.png" alt="https://cdn.bencrowder.net/blog/2022/07/se-c-0001.png" title="https://cdn.bencrowder.net/blog/2022/07/se-c-0001.png" /></a>
        
      </figure></p>
<p>If the family sheet were for Agustin’s grandchildren or great-grandchildren, the collateral line would extend further downward (with each collateral line generation lining up with its parallel main line generation).</p>
<p>The syntax for both ancestor line charts:</p>
<pre>
line: -T -J -A A- E- LF

line: -T J- A- -I -M -J PA > A-
</pre>
<p>I went through a whole bunch of iterations on the syntax before landing on this, which I really like. It’s concise and reads easily to me, and it also happens to be very, very easy to parse.</p>
<h3 id="familysparklines">Family sparklines</h3>
<p>I’ve changed the family sparklines to show whether children are sons (hollow diamonds) or daughters (filled circles), and the marriages are now slightly thicker and longer vertical lines. (So in the second screenshot, you can see that Agustin married three times. And yes, he had a couple children when he was in his sixties!)</p>
<p>Though these don’t show it, I’ve also added support for twins and other multiple births.</p>
<p>Next up, I’m planning to add dotted lines for date ranges (“died between X and Y”) and markers for divorce and for the death of a spouse. Also working toward making this month-level granular instead of just year-level. (Right now, if someone is born in January of one year and their next sibling is born December of the next year, the sparklines make it look like they’re only one year apart even though in reality they’re almost two apart.)</p>
<h3 id="otherchanges">Other changes</h3>
<p>The layout has changed a bit, mostly to give more horizontal room for the sparklines, and to set the husband and wife side by side (which saves vertical space and also creates a spatial analogue to the ancestor line chart).</p>
<p>I’m no longer manually (and laboriously) loading these in the browser to export the PDFs. Instead, I call Chrome in headless mode as part of my script:</p>
<pre>
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome \
  --headless \
  --disable-gpu \
  --print-to-pdf \
  --print-to-pdf-no-header \
  http://local.test/family-sheets/html/FILENAME.html
</pre>
<p>Last (and also least), I’ve switched the font from EB Garamond to Clifford Pro. Mmm.</p>
<h3 id="thecode">The code</h3>
<p>Right now the code is a bit of a mess. Now that the prototype has served its purpose, I’m about to rearchitect it all and port it to Node, possibly Bun, possibly with ArchieML. (It’s currently Python with Jinja2 and YAML. For years I’ve used Python for writing almost all my command-line tools, but lately I find that I’d rather write JavaScript. Time for an ecosystem shift.)</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20I’ve been doing a lot of genealogy lately, and as part of that I’ve been refining the family sheets...">Reply via email</a></p>]]></description>
    </item>
    
  </channel>
</rss>
