javascript - cytoscape 中的边缘可以有多种颜色吗

标签 javascript cytoscape.js

我正在尝试创建具有多种颜色的边缘,但不知道如何进行。 理想情况下,链接的每一半都将独立更新其颜色。

想知道这是否可行。 多谢 :)

最佳答案

看起来确实是这样!检查https://js.cytoscape.org/#style/edge-linehttps://js.cytoscape.org/#style/gradient

策略是将线渐变分解为颜色停止位置,每个位置都有一个关联的颜色,如下所示:

var cy = (window.cy = cytoscape({
  container: document.getElementById("cy"),
  boxSelectionEnabled: false,
  autounselectify: true,

  style: [{
      selector: "node",
      css: {
        "label": "data(id)",
        "text-valign": "center",
        "text-halign": "center",
        "background-color": "data(faveColor)"
      }
    },
    {
      selector: "edge",
      css: {
        "line-fill": "radial-gradient",
        "line-gradient-stop-colors": "red green blue",
        "line-gradient-stop-positions": "25 50 75"
      }
    }
  ],
  elements: {
    nodes: [{
        data: {
          id: "a",
          faveColor: "#2763c4"
        }
      },
      {
        data: {
          id: "b",
          faveColor: "#37a32d"
        }
      },
      {
        data: {
          id: "c",
          faveColor: "#37a32d"
        }
      }
    ],
    edges: [{
        data: {
          source: "a",
          target: "b"
        }
      },
      {
        data: {
          source: "a",
          target: "c"
        }
      }
    ]
  },
  layout: {
    name: "dagre"
  }
}));

cy.ready(function() {
  cy.dblclick();
});

var nid = 0;
cy.bind('dblclick', function(evt) {
  console.log('dblclick');
  cy.add({
    group: 'nodes',
    data: {
      id: nid,
      faveColor: 'red'
    },
    position: {
      x: evt.x,
      y: evt.y
    }
  });
  nid++;
});

cy.bind('click', 'node', function(evt) {
  console.log('node clicked: ', evt.target.id());
});
body {
  font: 14px helvetica neue, helvetica, arial, sans-serif;
}

#cy {
  height: 100%;
  width: 100%;
  float: right;
  position: absolute;
}
<html>

<head>
  <meta charset=utf-8 />
  <meta name="viewport" content="user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, minimal-ui">
  <script src="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4d2e3439223e2e2c3d280d7e637e637d" rel="noreferrer noopener nofollow">[email protected]</a>/dist/cytoscape.min.js">
  </script>
  <!-- cyposcape dagre -->
  <script src="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="21454046534461110f160f15" rel="noreferrer noopener nofollow">[email protected]</a>/dist/dagre.js"></script>
  <script src="https://cdn.rawgit.com/cytoscape/cytoscape.js-dagre/1.5.0/cytoscape-dagre.js"></script>
  <script src="https://unpkg.com/cytoscape-dblclick/dist/index.js"></script>
</head>

<body>
  <div id="cy"></div>
</body>

</html>

关于javascript - cytoscape 中的边缘可以有多种颜色吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350336/

相关文章:

javascript - Angular JS 路由不起作用

javascript - 如何使整个div可点击

cytoscape.js - cytoscape.js 中节点之间的填充

javascript - 我根本无法让 cytoscape.js 显示我的图表

javascript - 如何在分组时删除重复的数组(按 id)?

javascript - 颜色变化时 Canvas 形状上出现锯齿状边缘

javascript - 基于宽度的动画时间

javascript - 如何在使用库 react-cytoscape.js 进行一些拖动操作后重置为初始坐标

css - Cytoscape,试图显示图像而不是节点

typescript - cytoscape.js - 节点之间的间距