首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在svelte中使用sigma.js

如何在svelte中使用sigma.js
EN

Stack Overflow用户
提问于 2022-07-09 18:28:15
回答 2查看 153关注 0票数 4

我一直在尝试用Svelte / Sveltekit加载sigma.js,但似乎没有组件集成,也没有关于如何实现这一点的指导。我试着在Sveltekit中作为客户端代码加载它,但没有成功,但我不知道这是否是一种合法的方法。在使用Sveltekit运行的Sigma.js中,有没有简单图的工作示例?

EN

回答 2

Stack Overflow用户

发布于 2022-07-09 20:16:38

解析gexf文件的示例:

代码语言:javascript
复制
<script lang="ts">
    import Sigma from 'sigma';
    import Graph from 'graphology';
    import { onMount } from 'svelte';

    let container: HTMLElement;

    onMount(async () => {
        const res = await fetch('/arctic.gexf');
        const gexf = await res.text();
        const { parse } = await import('graphology-gexf/browser');

        const graph = parse(Graph, gexf);

        const renderer = new Sigma(graph, container, {
            minCameraRatio: 0.1,
            maxCameraRatio: 10,
        });
    })
</script>

<div bind:this={container} class="container" />

<style>
    .container {
        width: 800px;
        height: 600px;
    }
</style>

所需的包:

  • sigma
  • graphology
  • graphology-gexf (用于读取.gexf文件)

graphology-gexf有两种模式,一种用于节点,一种用于浏览器。为了防止SSR中的错误,可以动态导入浏览器部件。

在Svelte中,您可以通过bind:this访问DOM元素,而不是查询DOM,大多数其他事情并没有什么不同。以这种方式绑定的元素可以在onMount中使用。

arctic.gexf放在static目录中。代码是从这个例子改编而来的(没有所有附加功能)。

票数 2
EN

Stack Overflow用户

发布于 2022-07-09 21:56:49

我创建了一个简单的sigma应用程序,如下所示:

代码语言:javascript
复制
npm init vite svelte-sigma -- --template svelte
cd my-app
npm install
npm run dev

安装sigma.js之后:

代码语言:javascript
复制
npm install graphology sigma

现在我像这样改变了App.svelte:

App.svelte

代码语言:javascript
复制
<script>
  import Sigma from 'sigma';
  import Graph from 'graphology';
  import { onMount } from 'svelte';

  onMount(() => {
    const container1 =  document.getElementById("sigma-container");
    

      const graph = new Graph();

      graph.addNode("John", { x: 0, y: 10, size: 15, label: "John", color: "blue" });
      graph.addNode("Mary", { x: 10, y: 0, size: 10, label: "Mary", color: "green" });
      graph.addNode("Thomas", { x: 7, y: 9, size: 20, label: "Thomas", color: "red" });
      graph.addNode("Hannah", { x: -7, y: -6, size: 25, label: "Hannah", color: "teal" });

      graph.addEdge("John", "Mary");
      graph.addEdge("John", "Thomas");
      graph.addEdge("John", "Hannah");
      graph.addEdge("Hannah", "Thomas");
      graph.addEdge("Hannah", "Mary");

      const renderer = new Sigma(graph, container1);

  });

  
</script>
<h1> Sigma graph exemple</h1>
<div id="sigma-container" />

<style>
  #sigma-container {
      width: 550px;
      height: 450px;
  }
</style>

我的本地主机上有这样的渲染:

你可以看到这个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72923756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档