2015-02-07 116 views
0

快速的問題。我正在嘗試使用cytoscape's.js mapData線性映射器來設置小圖中邊緣的顏色。然而,有一個小問題。以下示例沒有問題。設置cytoscape.js的變量限制mapData

.selector('edge') 
    .css({ 
     'line-color': 'mapData(similarity,1.8,3.78, blue, red)' 
     'width': 2, 
     'opacity': 0.8 
    }) 

但是,只要我替換了固定的邊界,我就有點醃製了。

.selector('edge') 
    .css({ 
     'line-color': 'mapData(similarity,min, max, blue, red)', 
     'width': 2, 
     'opacity': 0.8 
}) 

有色邊消失,全部變成灰色。最小和最大變量是先前設置的,我可以驗證它是因爲它們在創建圖之前用於計算其他內容。我瀏覽過文檔,但找不到有關此問題的任何內容。

@dandavis建議,它可能是一個插件。所以我嘗試添加將最大值和最小值添加到每個邊的json定義。這樣做的結果是,mapData函數可能會假設每當使用「變量」時,它們都存儲在適當選擇器的定義中。

id: "133700_307800" 
max_sim: 3.57829530512 
min_sim: 1.9655114484 
similarity: 3.57829530512 
source: "133700" 
target: "307800" 

任何想法?

非常感謝!

+0

因爲它不是正常的CSS,插件可能會翻譯它,並且該插件可能需要硬編碼數據,而不是可變引用,它可能無法看到它是否基於Function()。 – dandavis 2015-02-07 23:18:00

+0

謝謝!相應地編輯了這篇文章。 – horacv 2015-02-08 12:17:02

回答

0

我試圖爲mapData函數設置變量邊界無濟於事。我最終做的是在0和1之間縮放值,並在javascript中修正下限和上限。謝謝!

1

您不能指望變量在JS中的字符串中進行評估(除非使用明確使用的即將發佈的ES6功能)。所以,

.selector('edge') .css({ 'line-color': 'mapData(similarity,min, max, blue, red)' 'width': 2, 'opacity': 0.8 })

成爲

.selector('edge') .css({ 'line-color': 'mapData(similarity,' + min + ', ' + max + ', blue, red)' 'width': 2, 'opacity': 0.8 })

等。

+0

乾杯@maxkfranz。只需跟進,相似度(這是json中的值)與最小值和最大值之間的區別是什麼?我曾嘗試將最小和最大值存儲在json中,但這種方法沒有完成。 – horacv 2015-02-12 23:59:05