Приятно видеть, что кто-то работает с такими весомыми данными.
Вот один хитрый и неудовлетворительный способ:
digraph h {
rankdir=LR;
node [shape=record,height=.08,fontsize=11];
zoo [label="zoo|<p0>|<p1>|<p2>|<p3>"];
node [width=3.5];
elk[label="elk\l|I am an American Elk\l",];
buffalo[label="buffalo\l|Just a buffalo\l|everywhere I go\l|people know the part I'm playing\l"];
cow[label="cow\l|moo\l"];
moose[label="Bullwinkle J. Moose\l|Hey Rocky, watch me pull a rabbit out of my hat!\l"];
zoo:p0->elk; zoo:p1 -> cow; zoo:p2 -> moose; zoo:p3 -> buffalo;
}
Дайте каждому прямоугольнику в этом ранге одинаковую (определенную эмпирически) ширину, затем выровняйте текст по левому краю с помощью странного \l
"выравнивания по левому краю строки".