2011-06-19 73 views
16

我製作的圖形具有巨大的寬度比例:大小爲51706 x 503像素。 如何告訴GraphViz優化寬度?如何優化GraphViz輸出寬度?

注1:圖形實際上是一棵樹,每個節點都有很多子節點。 這裏是sample

注2:我覺得我用點:)

注3:這裏是Ruby code

+0

記錄哪些佈局 - 點或NEATO?你有沒有樣品? – marapet

+0

點,我想:) [這是一個示例](https://9099831083452856398-a-1802744773732722657-s-sites.googlegroups.com/site/faivrem/home/myteacher/best_node.svg?attachauth = ANoY7cqLGm936eOGjRks95aqfrt-Da0peR4y1OfybiKGH6PN-oJgyA2G239UTtpqbW0Sm_3fgrWbNtKSQBine-dirDQPIJG8uNsCpW1BSUXVOcAP3Cni3Jewgz5mdfV9g7FToe3sA6R1YUGcXscy4w8MTpdB_C_G4O51yBwwwAN4r9bqk4Ph08O2KIoPZIeKcGJqV2guNFCLRuwh5wc9jre0ST7dPxWNXw%3D%3D&attredirects = 1) – MickaelFM

+0

我想生成的圖像(點文件)的代碼的一個示例的。但從鏈接到的圖片來看,「ratio =」compress「和」size「一起應該會產生一個較小的結果。另外,你是否嘗試過其他佈局(neato)? neato的結果可能會更有趣。 – marapet

回答

12

如果圖由未連接幾棵樹,你可以將它們分割(如在Graphviz: break flat but sparsely connected graph into multiple rows?提到)

根據您的特殊圖形,您可以使用

ratio="compress" 
時獲得較小的圖

(你必須雖然指定size)在一個特定的圖形

有關詳細的優化,您可以添加rank屬性和分發節點手動不同級別。


編輯:

有一個叫unflatten一個graphviz的工具,這似乎正是存在這樣的目的:

unflatten是點一個預處理器用於改善方面 具有許多樹葉或斷開節點的圖的比例。通常這種圖形的 佈局通常非常寬或很高。 unflatten 插入不可見邊或調整邊上的微分以改善佈局壓縮。

從來沒有需要使用它,但我認爲這是值得一試。

+0

看來工作([這裏輸出(https://9099831083452856398-a-1802744773732722657-s-sites.googlegroups.com/site/faivrem/home/myteacher/compress.svg?attachauth=ANoY7coiJU97n6-GgU0je_wHj1D7OeYs5ITEXaEldXpyAN9ch2uhaF62qAMFZubDjZAt1iS8OVZH_cnRNuJKfx6qgSnGoKp-iG9FjuGYZjJhR5MsxrUy7HwCslcQLn9d7EEAHkGzGvwxP7KJ9ix5crQGByeITYL9tcT6r78aiwF4hfuD-f5uc5W_j1szBxSXsuz4VTRyRHPMntarIruzDicYyCppipJ7NQ %3D%3D&attredirects = 0)),但有些孩子節點混在一起。你知道我怎樣才能增加父母和孩子之間的高度? – MickaelFM

+0

兩個等級之間的垂直距離可以通過設置'ranksep'屬性來調整。 – marapet

+0

** unflatten **很棒。真的值得嘗試,也是幫助解決問題的唯一工具。 – fiatjaf

2

你可以嘗試用ratio參數玩。

+0

我無法做到這一點...我嘗試了很多參數。我編輯了一篇鏈接到示例的帖子。我想要增加父母和孩子之間的垂直空間,或者要麼增加孩子的位置,因此寬度會減小。 – MickaelFM

2

我也有問題,neato之間保留了很多空間。最後,我實現除了使用下面的圖表設置一個合理的結果:

overlap=prism, overlap_scaling=0.01, ratio=0.7 

這對overlap_scaling和比率是特別有用的測試不同的值。使用較小的示例(< 50個節點)最快,並使用gvedit.exe查看效果。

我花了相當長一段時間,以確定這些設置,這是在http://www.graphviz.org/doc/info/attrs.html