2005/12/27, wb <wb@...>:
> I publish some of my family graphs at
Interesting, if I understood that right, that would make you a distant
relative of my wife, since I think she is descended from one of
Charles V great-great-great-grandfathers.
I also see that you graphs are large as mine, it is good for setting
the context, since what works for 200 hundred boxes does not work
necessarily for 2000.
> Some useful options for processing the dot files are:
> 1. Put the graph in black and white, without having to run Gramps to
> generate another report. Females are indicated by rounded node
> geometry (a rounded box). Makes it easier to print on my old black &
> white printer.
> 2. Adjusting the weights of the edges. I can make a graph collect all
> of the children of parents close together (which I prefer), or to
> collect married individuals close together. By default, all edges are
> equally important.
In my trials, I never got satisfying results with this. But I guess
it has more to do with the kind of graphs that interest me, that are
from the 'family as stack' variety. I did a partial reimplementation
of it, but it is still has some gotchas. I should have another look
> 3. Adjust the scale of the output.
> 4. Adjust the physical dimensions of the output.
> 5. Adjust the rank and node separation distances.
No objection on any of these.
> 6. Allow the sorting of the output nodes by birth date and name. This
> tends to lead to a more orderly graph. The dot utility does not
> guarantee to keep nodes in order, but it tends to. When you have 75 or
> 100 people in a generation, this matters.
Ah, yes. This is the major gripe. What I did was playing with
ordering=3Din and ordering=3Dout. It works rather well for mostly flat
graphs, e.g. ancestor or descendant graphs. But many graphs I like
are variations of 'having a common ancestor with' that are quickly
nonplanar. In this case, the result with default parameters is
aesthetically pleasant, but makes no sense form a genealogy point of
view. Playing with ordering (=3Din or =3Dout) and astute ordering of the
input dot file (I experimented with several methods for this) helps in
achieving interesting results, but in the end may be uglier. In
particular, I hate long lines from one side of the graph to the other
when they are caused by silly node placement. They are more common if
you don't let graphviz do its thing. Graphviz is a vengative thing,
may seem to oblige but will make you pay for it.
In the end, I suspect that the most effective way to handle this would
be for graphviz not to change edge ordering unless necessary. =20
Another possible improvement: have edges respect the order even if
boxes themselves do not. I mean, the edges leave the parents in birth
order, even if they cross each other later. Currently, edge order
seems pretty random.
> 7. Allow the highlighting in red of all families that don't make sense,
> like families with 3 or more married spouses. Or children who are
> natural children of two marriages. This happens a lot when a GEDCOM
> file is imported, as was discussed on the mailing list last week.
> 8. Adjust the page size of the output (other than the standard sizes
> defined in ghostscript). This lets me print a large graph on a
> continuous feed dot-matrix printer. It also lets me put a graph on one
> huge PDF file. Then, I can bring it to Kinko's and print it on their
> big printer.
You cannot put a graph on a huge PDF file. As far as know, 3240 dots
is the limit. You may view it well, but some print shops will not.=20
Last summer I had this problem printing a 1,5m x 1,5m graph, it would
end up truncated. I had to resort to svg output. Unfortunately for
svg you need Unicode fonts, while PostScript output seems to require
> 9. Allow highlighting of one node (usually the home individual) by
> making that node a different color or shape.
On this, I implemented a couple of related concepts. First,
color-code edges. Here the idea was to give a different color to each
agnatic lineage, the set of people descending from a common ancestor
by a pure paternal descent line. In hand-drawn trees, they tend to do
this by changing the leave decoration used for the different tree
branches. It is very good for getting orientation on a large graph.
Second, highlight (bolden) the lines leading to some distinguished
person (typically the person for whome the tree is printed, usually
you or one of your children) so that at each family, you see quickly
which child is the distinguished person descended from.
These two changes allow moving up and down the tree by using easy visual cl=
> 10. Allow the setting of all dot file parameters (like center, ratio,
> rankdir, and the ones mentioned elsewhere in this message).
> 11. Add legends for each graph with the individual counts and copyright
> announcements and such.
Oh, yes, I'd love that. I had a quick look on how to do it and did
not find an obvious way.
> 12. Allow the selection of the direction of the graph (rankdir=3Drl and
> rotate=3D0) without having to run another report from Gramps. I like
> time (and descent) to run from left to right and the display to be
> 13. Something I never was able to do to the graphviz graph -- to add
> information from the Gramps database that was not originally included
> in the graph. For instance, a picture or date AND location.
I think there should be demand for this. Of course, if you want to
have photos, you have to be more conservative with your graph or they
won't be visible,
Also another thing I did was to improve the abbreviated date display.=20
Currently, you can have either full dates or just the year, but in the
latter case you will just get the begginining year in a range or span
and no indication on whether the year is exact or is only orientative.
I implemented a method to handle better the year-only case.
> P.S. I have attached two dot files that represent the entire example
> database. One is original, and the other is modified by a script I
> commonly use. To see them, in bash, do:
> display <(dot -Tps example.dot) &
> display <(dot -Tps example.dot.mydot) &
I did not look at them yet, I will later.