Graphviz'i kullanırken etiketleri kenara göre görüntüleyin


91

Graphviz 2.30 kullanıyorum. Etiketler için yatay konumlandırma işe yarar, ancak birkaç durumda, değiştirilmiş bir açı istenir.

Örneğin, burada açı için çeşitli değerler denedim, ancak hiçbir etkisi olmadı:

ABB -> ABACUS[label="applied", fontname="Arial", fontsize=15, labelangle=110];

Bir Graphviz kullanırken etiketleri nasıl kenara paralel (yani paralel) görüntüleyebilirim digraph.

digraphNDA nedeniyle tamamı gönderilmeyecektir. Ek olarak, rotasyon yalnızca birkaç etikete uygulanacaktır.

Ben gibi benzer konuları okudum bu ya başka (veya örneğin hizalama hakkında bir iplik) ama benim konuyla ilgili herhangi bir yardım almadan.


2
'etiket açısı' yalnızca başlık etiketleri ve kuyruk etiketlerinde çalışır, ayrıca etiketi döndürmez, yalnızca etiketin nereye yerleştirileceğini (hala yatay bir çizgi olan) (etiket mesafesi ile birlikte) tanımlar. 0 açısı, kenar boyunca başlangıç ​​/ bitiş noktasından gidiyor. Açılı + / - etiketler kenarın üstüne veya altına yazdırılabilir. 0 mesafesi ile açı etkisizdir. Afaik hala çözülemeyen, kenarları takip etmek için etiketlerin döndürülmesiyle de çok ilgilenirim.
bug313

1
Bunu yapmanın bir yolu olmadığı hissine kapılıyorum. Ancak özelliklerin yokluğu nadiren belgelendiğinden (sonsuz miktarda dokümantasyona yol açacaktır), bu konuda güvenilir bir yanıt yazmak zordur. Dokümantasyonun tamamında veya kod tabanının belirsiz bir köşesinde böyle bir şeyden söz edilmediğini belirtemediğiniz sürece.
bigblind

1
Graphviz'deki metin öğelerinin tümü, konumlandırma sırasında normal bir kutu ile sınırlanır. Algoritma, kenar yerleştirme sırasında bu kutu sınırlarını aşmaktan kaçınmaya gerçekten çok çalışıyor. Bir etiket döndürülebilirse, bu kutular çok daha büyük hale gelir ve bu da görüntüleme alanında önemli bir baskıya neden olur. Etiketler kenarlar veya düğümlerle örtüşebiliyorsa, daha sonra görüntüleme hattında döndürülebilirler.
Pekka

1
aslında bunu belgelerde bulabilirsiniz: github.com/ellson/graphviz/blob/master/doc/internal_todo.html "? - Metne bir açıda izin ver"
MK.

Yanıtlar:


6

Dot2latex kullanmak , lblstyleöznitelik belirlemenizi sağlar . Değeri lblstyletarafından kullanılan PGF / TikZ PDF nesil.

Paralel etiketler şu şekilde belirtilebilir:

digraph G {
    edge [lblstyle="above, sloped"];
    a -> b [label="ab"];
    b -> c [label="bc"];
    c -> a [label="ca"];
}

Pdf oluşturmak için

$ dot2tex --tikzedgelabel file.dot > file.tex
$ pdflatex file.tex

Sonuç

görüntü açıklamasını buraya girin


Ne yazık ki grafiği oluştururken tüm etiketlerin açılarını bilmeniz gerekir; OP, etiketlerini kenar ne olursa olsun, kenara paralel olarak göstermek ister.
Galax

1
@Galax Yorumunuz için teşekkürler. Cevabı düzelttim.
malbarbo

Harika bul - bu kullanışlı bir özellik, dotdaha önce fark etmemiştim (ya da belki yeni).
Galax

-1

Düzenleme: başka bir yanıt, metni kenarlarla hizalamak için artık var olan bir seçenek buldu.

En iyi seçeneğiniz grafiği dışa aktarmak SVGve kullanmak Illustratorveya Inkscapeince ayar yapmak olabilir. Bu yalnızca birkaç grafik oluştururken pratiktir.

Sık sık çıktıyı Graphvizve Gephi; yine de bana iyi bir başlangıç ​​noktası veriyorlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.