2014-02-26 80 views
4

我很難爲具有多個標籤的節點設置屬性。Neo4j 2.0.1對於多個標籤的graphstyle.grass

我graphstyle.grass文件看起來像這樣:

node { 
    diameter: 40px; 
    color: #aaaaaa; 
    border-color: #888888; 
    border-width: 1.5px; 
    text-color-internal: #000000; 
    caption: '{name}'; 
    font-size: 12px; 
} 

node.foo { 
    color: #aaaaff; 
} 

node.bar { 
    color: #aaffaa; 
} 

node.bar.a { 
    border-color: #ff0000; 
} 

node.bar.b { 
    border-color: #0000ff; 
} 

所以這裏的意圖是,如果你有「酒吧」的標籤節點是彩色的某種方式,如果你也有一個額外的標籤'a'或'b'的邊框顏色適當。我的CSS知識很薄弱,但我認爲這是傳統上多個類選擇器是如何完成的。

我在Neo 2.0.1瀏覽器圖形顯示中看到的行爲是,如果一個節點有多個標籤,它會選擇第一個標籤,嘗試在草地文件中找到node.first_label選擇器,如果它沒有找不到它只是爲它添加了一個新的選擇器。所以兩個具體的例子:

  1. 如果有帶標籤的一個節點[「酒吧」,「一」](按順序),那麼的Neo4j會發現上面的node.bar選擇並使用它,沒有做任何事情與第二類..即'node.bar.a'屬性不會被應用。
  2. 如果節點具有標籤['a','bar'](按照該順序),那麼Neo4j將查找形式爲'node.a'的選擇器,而不是調用上面的任何選擇器,而是創建一個帶有一組默認參數的新選擇器。

任何指導或建議,非常感謝。

回答

1

這是一個完全合理的方法,這將是正確的。從Neo4j 2.0.1開始,圖形樣式表還不夠巧妙,無法處理鏈式類選擇器。選擇的順序是(如你所見)也被打破。

更新: 截至2.2,multiple class selectors are supported,只要您手動編輯草定義。

+0

Thx安德烈亞斯,我是一個超級大粉絲Neo4j .. woot woot!新的標籤支持非常好,多個標籤會很受歡迎,所以解決這個小問題可能會幫助不少人。 :) –

+0

感謝您的信息!Neo4J是否有bug追蹤器,並且已經添加了這個問題?能夠跟隨這一進程將會很好。 – John

+0

嘿,我們正在內部追蹤trello牆的積壓。我已經提出了一個github問題,以便進一步的意見和建議可以發生在那裏 - https://github.com/neo4j/neo4j/issues/2112。此外,這是一個我喜歡喜歡javascript和CSS黑客入侵的人的地方。如果那是你,請平息我。 – akollegger

0

也許使用Alchemy的SVG + CSS支持dataviz? (通過GraphJSON將數據發送給它) - http://neo4j.com/developer/guide-data-visualization/#_library_alchemy_js_open_source_graph_visualization

http://graphalchemist.github.io/Alchemy/#/docs 是說: 「樣式通過CSS趨於僵化,因爲它不涉及任何形式的數據。但是,有些人可能要使用。這是SVG/CSS提供的一個難以理解的特性,並且我們確信這很容易實現。節點和邊的svg元素接收與配置選項edgeTypes和nodeTypes中定義的類型相對應的類。根據我們的數據和這個例子,我們可以使用這個CSS來生成如下圖:「

雖然它ca如果SVG確實支持像你所尋找的那樣的CSS概念,我覺得它比默認方式更靈活鍊金術建議你做造型

我不知道Alchemy是否支持圖像(位圖和SVG的)節點。我還希望看到多個圖像(每個節點的標籤)以某種方式重疊(如果Neo4j中確實存在標籤順序概念,則基於標籤順序進行排序)。也許如果使用的代碼類似於Popoto.js(http://www.popotojs.com/),它也使用D3

+0

順便說一句,我看到GRASS已經在這個領域發展了:https://github.com/neo4j/neo4j/pull/4092 –