แสดงฉลากในแนวเดียวกับขอบเมื่อใช้ Graphviz


91

ฉันใช้ Graphviz 2.30 การวางตำแหน่งตามแนวนอนสำหรับป้ายจะใช้งานได้ดี แต่ในบางกรณีอาจต้องการมุมที่ปรับเปลี่ยน

ตัวอย่างเช่นฉันลองค่าต่างๆสำหรับมุมที่นี่ แต่ไม่มีผลใด ๆ :

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

ฉันสามารถแสดงฉลากในแนวเดียวกันกับ (เช่นขนานไป) ขอบเมื่อใช้ digraphGraphviz

ทั้งหมดdigraphจะไม่ถูกโพสต์เนื่องจาก NDA นอกจากนี้การหมุนเวียนจะใช้กับป้ายกำกับไม่กี่ป้ายเท่านั้น

ฉันได้อ่านหัวข้อที่คล้ายกันเช่นนี้หรือหัวข้ออื่น ๆ (หรือหัวข้อเกี่ยวกับการจัดตำแหน่งเป็นต้น) แต่ไม่ได้รับความช่วยเหลือใด ๆ เกี่ยวกับปัญหาของฉัน


2
'labelangle' ใช้งานได้กับไฟหน้าและป้ายท้ายเท่านั้นนอกจากนี้ยังไม่หมุนฉลาก แต่กำหนด (ร่วมกับระยะทางฉลาก) ตำแหน่งที่จะวางป้าย (ซึ่งยังคงเป็นเส้นแนวนอน) มุม 0 จะไปจากจุดเริ่มต้น / จุดสิ้นสุดตามขอบ ด้วยมุม + / - สามารถพิมพ์ฉลากด้านบนหรือด้านล่างขอบได้ ด้วยระยะทาง 0 มุมจะไม่มีผล ฉันยังสนใจเป็นอย่างมากที่จะมีการหมุนป้ายกำกับไปตามขอบซึ่ง afaik ยังไม่ได้แก้ไข
bug313

1
ฉันรู้สึกว่าไม่มีทางทำแบบนี้ได้ แต่เนื่องจากแทบจะไม่มีการบันทึกคุณลักษณะต่างๆ (ซึ่งจะทำให้มีเอกสารจำนวนไม่ จำกัด ) จึงยากที่จะเขียนคำตอบที่เชื่อถือได้ เว้นแต่คุณจะสามารถชี้ให้เห็นว่าไม่มีการกล่าวถึงสิ่งนี้ในเอกสารทั้งหมดหรือในมุมที่คลุมเครือของ codebase
bigblind

1
องค์ประกอบข้อความใน Graphviz ทั้งหมดล้อมรอบด้วยช่องปกติระหว่างการวางตำแหน่ง อัลกอริทึมพยายามอย่างมากที่จะหลีกเลี่ยงการข้ามขอบเขตของกล่องเหล่านี้ในระหว่างการวางขอบ หากสามารถหมุนฉลากได้กล่องเหล่านี้จะใหญ่ขึ้นมากส่งผลให้เกิดแรงกดบนพื้นที่แสดงผลมาก หากฉลากสามารถทับขอบหรือโหนดได้ก็สามารถหมุนได้ในภายหลังในท่อส่งภาพ
Pekka

1
จริงๆแล้วคุณสามารถพบได้ในเอกสาร: github.com/ellson/graphviz/blob/master/doc/internal_todo.html "? - อนุญาตข้อความที่มุม"
MK

คำตอบ:


6

การใช้dot2latexช่วยให้คุณระบุlblstyleแอตทริบิวต์ ค่าของlblstyleถูกใช้โดยPGF / TikZในการสร้าง pdf

หนึ่งสามารถระบุฉลากคู่ขนานเช่นนี้:

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

ในการสร้าง pdf

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

ผลลัพธ์คือ

ใส่คำอธิบายภาพที่นี่


น่าเสียดายที่คุณต้องรู้มุมของป้ายกำกับทั้งหมดเมื่อสร้างกราฟ OP ต้องการแสดงฉลากขนานกับขอบไม่ว่าขอบจะอยู่ที่มุมใด
Galax

1
@Galax ขอบคุณสำหรับความคิดเห็นของคุณ ฉันแก้ไขคำตอบแล้ว
malbarbo

การค้นพบที่ยอดเยี่ยมนั่นเป็นคุณสมบัติที่มีประโยชน์ของdotฉันไม่เคยสังเกตมาก่อน (หรืออาจเป็นของใหม่)
Galax

-1

แก้ไข: คำตอบอื่นพบตัวเลือกที่มีอยู่ในขณะนี้เพื่อจัดแนวข้อความให้ชิดขอบ

ตัวเลือกที่ดีที่สุดของคุณคือส่งออกกราฟเป็นSVGและใช้IllustratorหรือInkscapeปรับแต่งกราฟ สิ่งนี้ใช้ได้จริงเมื่อสร้างกราฟไม่กี่กราฟ

ฉันมักจะต้องปรับแต่งผลลัพธ์จากGraphvizและGephi; พวกเขาให้จุดเริ่มต้นที่ดีกับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.