有没有办法将自定义映射器添加到新的 cytoscape.js 中?
我知道有数据(nodeKey),但它使用了nodeKey的从头值。我可以设置自己的映射吗?
谢谢!
有没有办法将自定义映射器添加到新的 cytoscape.js 中?
我知道有数据(nodeKey),但它使用了nodeKey的从头值。我可以设置自己的映射吗?
谢谢!
这是我的自定义映射器:
/* Converts element attributes to their appropriate mapped values
* Any non-matching attributes will be matched to the "other" mapping
* if exists
* data: data
* elementType: nodes or edges
* attr: some key under data.nodes[i].data
* mapping: obj mapping oldVal: newVal for attr
* (toType): new values will be put into this attr, if attr
* shouldn't be touched
*/
function mapAttr(elementType, attr, mapping, toType){
for(var i=0; i < data[elementType].length; i++){
element = data[elementType][i]['data'][attr];
toType = toType ? toType : attr;
if( mapping[element] ){
data[elementType][i]['data'][toType] = mapping[element];
}else if(mapping['other']){
data[elementType][i]['data'][toType] = mapping['other'];
}
}
}
例子:
var nodeShapeMapper = {
Rearrangement: "hexagon",
Gene: "octagon",
Molecule: "triangle",
other: "ellipse"
};
mapAttr('nodes', 'ntype', nodeShapeMapper, 'shape');
这会根据 nodeShapeMapper[ntype] 为“shape”节点属性生成值
一般来说,自定义映射器过于昂贵,因此 Cytoscape.js 不支持它们。良好的性能是我们对库的最高要求之一。
如果您要描述您正在寻找的映射类型,那么今天的 API 可能是可能的,或者我们可以解决您的需求。谢谢!