3 ms·
Here's a stripped down version of the "LayoutGraph" script. In essence, layout the graph 100 times and score each attempt according to the size of the biggest
by RiderOfGiraffes 16y ago
Here's a stripped down version of the "LayoutGraph" script. In essence, layout the graph 100 times and score each attempt according to the size of the biggest box. Save the attempt in a file with a name that has the score in it, then pick off the best. That way I can compare attempts with each other while it runs.
GraphName=$1
GraphSize=$2
echo Laying out graph $1
LayoutParms="-Gstart=random -Nshape=box -Goverlap=false -Gsplines=true"
for n in 9 8 7 6 5 4 3 2 1 0
do
for m in 9 8 7 6 5 4 3 2 1 0
do
neato ${GraphName}.dot $LayoutParms -Gsize="${GraphSize}" -Tpng -o ${GraphName}.png -Timap -o ${GraphName}.map
score=`sed "s/,/ /g" ${GraphName}.map | gawk '{printf("%04d\n",$5-$3)}' | sort -rn | head -1`
mv ${GraphName}.png ${GraphName}.png_$score
mv ${GraphName}.map ${GraphName}.map_$score
echo $n$m $score `ls -l ${GraphName}.png_* | tail -1`
done
done
cp `ls ${GraphName}.png_0??? | tail -1` ${GraphName}.png
cp `ls ${GraphName}.map_0??? | tail -1` ${GraphName}.map
ls -r ${GraphName}.png_0??? | tail -n +2 | xargs rm
ls -r ${GraphName}.map_0??? | tail -n +2 | xargs rm
- slug 16y agoA small tip for the for loops: for n in {9..0}; do echo $n ; done or for n in $(seq 9 -1 0); do echo $n ; done
- RiderOfGiraffes 16y agoCool - thanks. I did actually know that, but I never got around to changing it to the more efficient version, and it's nice to be reminded.