Cytoscape 和选择器
Cytoscape and selectors
我不熟悉 cytoscape 或 Java,所以我不知道是否有一种方法可以根据节点的度来定义节点大小。
目前我正在使用以下内容:
cytoscapeobj.set_style(
[
{
'selector':node,
'style': {
'font-family': 'helvetica',
'font-size': '20px',
'label': 'data(id)'
}
},
{
'selector': 'edge',
'style': {
'font-family': 'helvetica',
'font-size': '20px',
'width' : 'mapData(weight)' # it is actually not working
}
},
{
'selector': 'node[Degree>0]',
'style': {
'width': '100px',
'height': '100px'
}
},
{
'selector': 'node[Degree>1]',
'style': {
'width': '150px',
'height': '150px'
}
},
{
'selector': 'node[Degree>2]',
'style': {
'width': '200px',
'height': '200px'
}
}
]
)
我有数千个节点,其中一些节点的度数为 1(大部分),然后我的节点度数为 2, 3, 4, 5 ,... 100, ...
为它们每个添加一个选择器并不容易。
你知道是否有更简单的方法来绘制任何节点的度数?
您可以在节点的 data and then use style mappers 中定义任何必需的参数,以将该数据应用于 width
或任何其他样式属性。所以你的代码实际上是正确的方法。
它不起作用,因为 mapData()
和 data()
以不同的方式工作。虽然 data()
只会将 data
值应用于 属性,就像它在您的示例中对 label
所做的那样,但 mapData()
需要设置其他参数。
看看这个:
width: mapData(weight, 0, 100, 1, 3)
在这种情况下,mapData
将采用 data.weight
的值,然后检查该值在 0 到 100 之间的位置,并按比例将 width
设置为 1 到 1 之间的相应值3.
根据我的经验,我发现使用在代码中预先计算的值更方便。所以我会创建 data.width
参数并设置为所需的宽度,然后将简单的 data()
映射器映射到该值。
我不熟悉 cytoscape 或 Java,所以我不知道是否有一种方法可以根据节点的度来定义节点大小。
目前我正在使用以下内容:
cytoscapeobj.set_style(
[
{
'selector':node,
'style': {
'font-family': 'helvetica',
'font-size': '20px',
'label': 'data(id)'
}
},
{
'selector': 'edge',
'style': {
'font-family': 'helvetica',
'font-size': '20px',
'width' : 'mapData(weight)' # it is actually not working
}
},
{
'selector': 'node[Degree>0]',
'style': {
'width': '100px',
'height': '100px'
}
},
{
'selector': 'node[Degree>1]',
'style': {
'width': '150px',
'height': '150px'
}
},
{
'selector': 'node[Degree>2]',
'style': {
'width': '200px',
'height': '200px'
}
}
]
)
我有数千个节点,其中一些节点的度数为 1(大部分),然后我的节点度数为 2, 3, 4, 5 ,... 100, ...
为它们每个添加一个选择器并不容易。
你知道是否有更简单的方法来绘制任何节点的度数?
您可以在节点的 data and then use style mappers 中定义任何必需的参数,以将该数据应用于 width
或任何其他样式属性。所以你的代码实际上是正确的方法。
它不起作用,因为 mapData()
和 data()
以不同的方式工作。虽然 data()
只会将 data
值应用于 属性,就像它在您的示例中对 label
所做的那样,但 mapData()
需要设置其他参数。
看看这个:
width: mapData(weight, 0, 100, 1, 3)
在这种情况下,mapData
将采用 data.weight
的值,然后检查该值在 0 到 100 之间的位置,并按比例将 width
设置为 1 到 1 之间的相应值3.
根据我的经验,我发现使用在代码中预先计算的值更方便。所以我会创建 data.width
参数并设置为所需的宽度,然后将简单的 data()
映射器映射到该值。