2015-02-07 120 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