跳到主要内容

音乐节

示例加载中…

源码
import { Graph } from '@antv/g6';

fetch('https://assets.antv.antgroup.com/g6/music-festival.json')
  .then((res) => res.json())
  .then((data) => {
    const map = new Map();

    data.forEach((datum) => {
      const { actors, venuecity } = datum;
      actors.forEach((actor) => {
        if (!map.has(actor)) map.set(actor, new Set([venuecity]));
        else map.get(actor).add(venuecity);
      });
    });

    const nodes = Array.from(map)
      .filter(([, city]) => city.size >= 2)
      .sort((a, b) => -a[1].size + b[1].size)
      .map(([name, city]) => ({
        id: name,
        data: {
          city: Array.from(city),
          value: city.size,
        },
      }));

    return { nodes };
  })
  .then((data) => {
    const graph = new Graph({
      container: 'container',
      data,
      node: {
        type: 'rect',
        style: {
          size: [100, 20],
          radius: 5,
          iconText: (d) => d.id,
          iconFill: '#000',
          iconWordWrap: true,
          iconWordWrapWidth: 80,
          iconFontSize: 15,
          iconTextOverflow: '...',
          iconMaxLines: 1,
          labelText: (d) => d.data.city.join('\n'),
          labelFontSize: 12,
          labelDy: 2,
          labelFill: '#fff',
        },
        palette: {
          type: 'group',
          field: 'value',
          color: [
            '#FCE75A',
            '#F5DB75',
            '#EFCF90',
            '#E8C3AB',
            '#E1B7C6',
            '#DBABE0',
            '#D49FFB',
            '#CD93FF',
            '#B981F2',
            '#7E45E8',
          ],
        },
      },
      layout: {
        type: 'grid',
        nodeSize: [100, 120],
        sortBy: 'order',
        cols: 5,
      },
      behaviors: [{ type: 'scroll-canvas', direction: 'y' }],
      plugins: [
        {
          type: 'background',
          background: '#000',
        },
      ],
    });

    graph.render();
  });
全站搜索
文档与示例输入关键词开始搜索

输入关键词,查找文档、API 与示例

↑↓选择↵打开Esc关闭