0

有没有办法将自定义映射器添加到新的 cytoscape.js 中?

我知道有数据(nodeKey),但它使用了nodeKey的从头值。我可以设置自己的映射吗?

谢谢!

4

2 回答 2

0

这是我的自定义映射器:

    /* 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”节点属性生成值

于 2013-08-21T21:14:21.720 回答
0

一般来说,自定义映射器过于昂贵,因此 Cytoscape.js 不支持它们。良好的性能是我们对库的最高要求之一。

如果您要描述您正在寻找的映射类型,那么今天的 API 可能是可能的,或者我们可以解决您的需求。谢谢!

于 2013-08-20T16:40:32.343 回答