Graphviz ignoriert Größenattribut (A4-Seite)

Betrachten Sie das folgende minimale Beispieldiagramm, das auf eine A4-Seite passen sollte

digraph G{
size="8.3,11.7!" ratio=fill;
foo->bar;
}

Kompilieren mitneato -Tpdf -o min_ex.pdf min_ex.gv Die resultierende PDF-Datei hat Abmessungen von 236 mm x 115 mm und nicht wie beabsichtigt 210 mm x 297 mm.

Graphviz ignoriert dieses Attribut sowohl für Grafiken, die kleiner als die Seite sind (wie diese), als auch für Grafiken, die verkleinert werden müssen, um zu passen.

Ich habe alle Kombinationen ausprobiertsize undratio Attribute, ich kann nicht das Diagramm erhalten, um auf eine A4-Seite mit irgendwelchen von ihnen gesetzt zu werden.

Was muss ich also angeben, damit das Diagramm unabhängig von seiner Größe immer auf einer A4-Seite abgelegt wird?

Dokumentation:

Größe:

Maximale Breite und Höhe der Zeichnung in Zoll. Wenn nur eine einzige Zahl angegeben wird, wird diese sowohl für die Breite als auch für die Höhe verwendet.

Wenn definiert und die Zeichnung größer als die angegebene Größe ist, wird die Zeichnung gleichmäßig verkleinert, sodass sie in die angegebene Größe passt.

Wenn die Größe mit einem Ausrufezeichen (!) Endet, wird die gewünschte Größe angenommen. In diesem Fall wird die Zeichnung gleichmäßig vergrößert, bis mindestens eine Bemaßung ihrer Bemaßung entspricht, wenn beide Bemaßungen der Zeichnung kleiner als ihre Größe sind.

Verhältnis

Legt das Seitenverhältnis (Zeichenhöhe / Zeichenbreite) für die Zeichnung fest. Beachten Sie, dass dies angepasst wird, bevor die Einschränkungen für Größenattribute erzwungen werden. Außerdem werden bei den Berechnungen normalerweise die Knotengrößen ignoriert, sodass die endgültige Zeichnungsgröße möglicherweise nur die gewünschten Werte annähert.

Wenn das Verhältnis numerisch ist, wird es als gewünschtes Seitenverhältnis verwendet. Wenn dann das tatsächliche Seitenverhältnis kleiner als das gewünschte Verhältnis ist, wird die Zeichenhöhe vergrößert, um das gewünschte Verhältnis zu erreichen. Ist das tatsächliche Verhältnis größer als das gewünschte Verhältnis, wird die Zeichenbreite vergrößert.

Wenn ratio = "fill" und das size-Attribut festgelegt ist, werden die Knotenpositionen in x und y getrennt skaliert, sodass die endgültige Zeichnung genau die angegebene Größe ausfüllt. Wenn beide Größenwerte die Breite und Höhe der Zeichnung überschreiten, werden beide Koordinatenwerte jedes Knotens entsprechend skaliert. Wenn jedoch eine der Größenbemaßungen kleiner als die entsprechende Bemaßung in der Zeichnung ist, wird eine Bemaßung so skaliert, dass die endgültige Zeichnung dasselbe Seitenverhältnis aufweist, das durch die Größe angegeben wird. Beim Rendern wird das Layout dann in beiden Dimensionen gleichmäßig verkleinert, um es an die angegebene Größe anzupassen. Dies kann dazu führen, dass Knoten und Text ebenfalls verkleinert werden. Dies ist möglicherweise nicht das, was der Benutzer wünscht, vermeidet jedoch das schwierige Problem, wie die Knoten in akzeptabler Weise neu positioniert werden können, um die Zeichnungsgröße zu reduzieren.

Wenn ratio = "compress" und das Größenattribut festgelegt ist, versucht dot, das ursprüngliche Layout so zu komprimieren, dass es in die angegebene Größe passt. Dies führt zu einer engeren Packung der Knoten, verringert jedoch das Gleichgewicht und die Symmetrie. Diese Funktion funktioniert nur in Punkt.

Wenn ratio = "expand" ist, wird das Größenattribut festgelegt, und sowohl die Breite als auch die Höhe des Diagramms sind kleiner als der Größenwert. Die Knotenpositionen werden gleichmäßig skaliert, bis mindestens eine Dimension genau zur Größe passt. Beachten Sie, dass sich dies von der Verwendung der Größe als gewünschte Größe unterscheidet, da hier die Zeichnung erweitert wird, bevor Kanten generiert werden und alle Knoten- und Textgrößen unverändert bleiben.

Wenn ratio = "auto", das Seitenattribut festgelegt ist und das Diagramm nicht auf einer einzelnen Seite gezeichnet werden kann, wird die Größe auf einen "idealen" Wert festgelegt. Insbesondere ist die Größe in einer gegebenen Dimension das kleinste ganzzahlige Vielfache der Seitengröße in dieser Dimension, die mindestens die Hälfte der aktuellen Größe beträgt. Die beiden Dimensionen werden dann unabhängig voneinander auf die neue Größe skaliert. Diese Funktion funktioniert nur in Punkt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage