2013-08-19 81 views

回答

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 [n型]

0

自定義映射器一般來說太貴,所以它們在Cytoscape.js中不受支持。良好的表現是我們對圖書館最重要的要求之一。

如果您要描述您正在尋找的那種映射,那麼今天就可以使用API​​,或者我們可以開展一些滿足您需求的工作。謝謝!

+0

您好@maxkfranz爲 「形狀」 的節點屬性值產生的,我'尋找一個簡單的方法來繪製沿着'var = {a:「六邊形」,b:「三角形」,c:「橢圓」}'線條的值,這些邊緣包含'type =''有可能嗎?離散地圖以這種方式,還是我必須分別處理這些情況?謝謝! –

+0

@JD。您不需要爲離散映射使用映射器。 'data()'語法實際上只是Cytoscape Web的一個結果,但最好使用CSS樣式(即在init中指定的樣式表中)。您可以將元素添加到元素以輕鬆設置元素的樣式,或者可以使用基於數據的更復雜的選擇器。請參閱http://cytoscape.github.io/cytoscape.js/#core/initialisation和http://cytoscape.github.io/cytoscape.js/#selectors – maxkfranz