• 简体中文
  • Sankey

    能源流向图形桑基图

    由 Sankey spec 反推得到的 VSeed 示例。每条链路被还原为一行 tidyData,source 和 target 使用节点名称,value 表示流量大小。示例同时开启 tooltip 与图例,支持 hover 高亮和图例筛选交互。

    import { VSeedRender } from '@components'
    
    export default () => {
      const vseedConfig = {
      "chartType": "sankey",
      "dataset": [
        {
          "sourceNode": "Agricultural 'waste'",
          "targetNode": "Bio-conversion",
          "value": 124.729
        },
        {
          "sourceNode": "Bio-conversion",
          "targetNode": "Liquid",
          "value": 0.597
        },
        {
          "sourceNode": "Bio-conversion",
          "targetNode": "Losses",
          "value": 26.862
        },
        {
          "sourceNode": "Bio-conversion",
          "targetNode": "Solid",
          "value": 280.322
        },
        {
          "sourceNode": "Bio-conversion",
          "targetNode": "Gas",
          "value": 81.144
        },
        {
          "sourceNode": "Biofuel imports",
          "targetNode": "Liquid",
          "value": 35
        },
        {
          "sourceNode": "Biomass imports",
          "targetNode": "Solid",
          "value": 35
        },
        {
          "sourceNode": "Coal imports",
          "targetNode": "Coal",
          "value": 11.606
        },
        {
          "sourceNode": "Coal reserves",
          "targetNode": "Coal",
          "value": 63.965
        },
        {
          "sourceNode": "Coal",
          "targetNode": "Solid",
          "value": 75.571
        },
        {
          "sourceNode": "District heating",
          "targetNode": "Industry",
          "value": 10.639
        },
        {
          "sourceNode": "District heating",
          "targetNode": "Heating and cooling - commercial",
          "value": 22.505
        },
        {
          "sourceNode": "District heating",
          "targetNode": "Heating and cooling - homes",
          "value": 46.184
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Over generation / exports",
          "value": 104.453
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Heating and cooling - homes",
          "value": 113.726
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "H2 conversion",
          "value": 27.14
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Industry",
          "value": 342.165
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Road transport",
          "value": 37.797
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Agriculture",
          "value": 4.412
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Heating and cooling - commercial",
          "value": 40.858
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Losses",
          "value": 56.691
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Rail transport",
          "value": 7.863
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Lighting & appliances - commercial",
          "value": 90.008
        },
        {
          "sourceNode": "Electricity grid",
          "targetNode": "Lighting & appliances - homes",
          "value": 93.494
        },
        {
          "sourceNode": "Gas imports",
          "targetNode": "Ngas",
          "value": 40.719
        },
        {
          "sourceNode": "Gas reserves",
          "targetNode": "Ngas",
          "value": 82.233
        },
        {
          "sourceNode": "Gas",
          "targetNode": "Heating and cooling - commercial",
          "value": 0.129
        },
        {
          "sourceNode": "Gas",
          "targetNode": "Losses",
          "value": 1.401
        },
        {
          "sourceNode": "Gas",
          "targetNode": "Thermal generation",
          "value": 151.891
        },
        {
          "sourceNode": "Gas",
          "targetNode": "Agriculture",
          "value": 2.096
        },
        {
          "sourceNode": "Gas",
          "targetNode": "Industry",
          "value": 48.58
        },
        {
          "sourceNode": "Geothermal",
          "targetNode": "Electricity grid",
          "value": 7.013
        },
        {
          "sourceNode": "H2 conversion",
          "targetNode": "H2",
          "value": 20.897
        },
        {
          "sourceNode": "H2 conversion",
          "targetNode": "Losses",
          "value": 6.242
        },
        {
          "sourceNode": "H2",
          "targetNode": "Road transport",
          "value": 20.897
        },
        {
          "sourceNode": "Hydro",
          "targetNode": "Electricity grid",
          "value": 6.995
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "Industry",
          "value": 121.066
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "International shipping",
          "value": 128.69
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "Road transport",
          "value": 135.835
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "Domestic aviation",
          "value": 14.458
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "International aviation",
          "value": 206.267
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "Agriculture",
          "value": 3.64
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "National navigation",
          "value": 33.218
        },
        {
          "sourceNode": "Liquid",
          "targetNode": "Rail transport",
          "value": 4.413
        },
        {
          "sourceNode": "Marine algae",
          "targetNode": "Bio-conversion",
          "value": 4.375
        },
        {
          "sourceNode": "Ngas",
          "targetNode": "Gas",
          "value": 122.952
        },
        {
          "sourceNode": "Nuclear",
          "targetNode": "Thermal generation",
          "value": 839.978
        },
        {
          "sourceNode": "Oil imports",
          "targetNode": "Oil",
          "value": 504.287
        },
        {
          "sourceNode": "Oil reserves",
          "targetNode": "Oil",
          "value": 107.703
        },
        {
          "sourceNode": "Oil",
          "targetNode": "Liquid",
          "value": 611.99
        },
        {
          "sourceNode": "Other waste",
          "targetNode": "Solid",
          "value": 56.587
        },
        {
          "sourceNode": "Other waste",
          "targetNode": "Bio-conversion",
          "value": 77.81
        },
        {
          "sourceNode": "Pumped heat",
          "targetNode": "Heating and cooling - homes",
          "value": 193.026
        },
        {
          "sourceNode": "Pumped heat",
          "targetNode": "Heating and cooling - commercial",
          "value": 70.672
        },
        {
          "sourceNode": "Solar PV",
          "targetNode": "Electricity grid",
          "value": 59.901
        },
        {
          "sourceNode": "Solar Thermal",
          "targetNode": "Heating and cooling - homes",
          "value": 19.263
        },
        {
          "sourceNode": "Solar",
          "targetNode": "Solar Thermal",
          "value": 19.263
        },
        {
          "sourceNode": "Solar",
          "targetNode": "Solar PV",
          "value": 59.901
        },
        {
          "sourceNode": "Solid",
          "targetNode": "Agriculture",
          "value": 0.882
        },
        {
          "sourceNode": "Solid",
          "targetNode": "Thermal generation",
          "value": 400.12
        },
        {
          "sourceNode": "Solid",
          "targetNode": "Industry",
          "value": 46.477
        },
        {
          "sourceNode": "Thermal generation",
          "targetNode": "Electricity grid",
          "value": 525.531
        },
        {
          "sourceNode": "Thermal generation",
          "targetNode": "Losses",
          "value": 787.129
        },
        {
          "sourceNode": "Thermal generation",
          "targetNode": "District heating",
          "value": 79.329
        },
        {
          "sourceNode": "Tidal",
          "targetNode": "Electricity grid",
          "value": 9.452
        },
        {
          "sourceNode": "UK land based bioenergy",
          "targetNode": "Bio-conversion",
          "value": 182.01
        },
        {
          "sourceNode": "Wave",
          "targetNode": "Electricity grid",
          "value": 19.013
        },
        {
          "sourceNode": "Wind",
          "targetNode": "Electricity grid",
          "value": 289.366
        }
      ],
      "dimensions": [
        {
          "id": "sourceNode",
          "alias": "Source",
          "encoding": "source"
        },
        {
          "id": "targetNode",
          "alias": "Target",
          "encoding": "target"
        }
      ],
      "measures": [
        {
          "id": "value",
          "alias": "Flow"
        }
      ],
      "color": {
        "colorScheme": [
          "#0B6CFF",
          "#3B8BFF",
          "#00A6A6",
          "#4DC3B2",
          "#FF8A00",
          "#FFB347",
          "#7B61FF",
          "#B39DFF",
          "#4CAF50",
          "#8BC34A"
        ]
      },
      "label": {
        "enable": true,
        "showDimension": true,
        "showValue": true,
        "labelFontSize": 10
      },
      "tooltip": {
        "enable": true
      },
      "legend": {
        "enable": true,
        "position": "top",
        "maxSize": 2,
        "shapeType": "rectRound"
      }
    }
    
      return <VSeedRender vseed={vseedConfig} />
    }

    透视图形桑基图

    按区域与年份透视后的图形桑基图。区域映射到行,年份映射到列,每个透视单元内展示一张独立的 source-target 流向图。

    import { VSeedRender } from '@components'
    
    export default () => {
      const vseedConfig = {
      "chartType": "sankey",
      "dataset": [
        {
          "region": "East",
          "year": "2023",
          "sourceNode": "Coal",
          "targetNode": "Power",
          "value": 120
        },
        {
          "region": "East",
          "year": "2023",
          "sourceNode": "Solar",
          "targetNode": "Power",
          "value": 80
        },
        {
          "region": "East",
          "year": "2023",
          "sourceNode": "Power",
          "targetNode": "Industry",
          "value": 90
        },
        {
          "region": "East",
          "year": "2023",
          "sourceNode": "Power",
          "targetNode": "Homes",
          "value": 70
        },
        {
          "region": "East",
          "year": "2024",
          "sourceNode": "Coal",
          "targetNode": "Power",
          "value": 90
        },
        {
          "region": "East",
          "year": "2024",
          "sourceNode": "Wind",
          "targetNode": "Power",
          "value": 110
        },
        {
          "region": "East",
          "year": "2024",
          "sourceNode": "Power",
          "targetNode": "Industry",
          "value": 85
        },
        {
          "region": "East",
          "year": "2024",
          "sourceNode": "Power",
          "targetNode": "Homes",
          "value": 95
        },
        {
          "region": "West",
          "year": "2023",
          "sourceNode": "Gas",
          "targetNode": "Power",
          "value": 100
        },
        {
          "region": "West",
          "year": "2023",
          "sourceNode": "Hydro",
          "targetNode": "Power",
          "value": 70
        },
        {
          "region": "West",
          "year": "2023",
          "sourceNode": "Power",
          "targetNode": "Industry",
          "value": 80
        },
        {
          "region": "West",
          "year": "2023",
          "sourceNode": "Power",
          "targetNode": "Transport",
          "value": 60
        },
        {
          "region": "West",
          "year": "2024",
          "sourceNode": "Gas",
          "targetNode": "Power",
          "value": 85
        },
        {
          "region": "West",
          "year": "2024",
          "sourceNode": "Hydro",
          "targetNode": "Power",
          "value": 95
        },
        {
          "region": "West",
          "year": "2024",
          "sourceNode": "Power",
          "targetNode": "Industry",
          "value": 75
        },
        {
          "region": "West",
          "year": "2024",
          "sourceNode": "Power",
          "targetNode": "Transport",
          "value": 88
        }
      ],
      "dimensions": [
        {
          "id": "sourceNode",
          "alias": "Source",
          "encoding": "source"
        },
        {
          "id": "targetNode",
          "alias": "Target",
          "encoding": "target"
        },
        {
          "id": "region",
          "alias": "Region",
          "encoding": "row"
        },
        {
          "id": "year",
          "alias": "Year",
          "encoding": "column"
        }
      ],
      "measures": [
        {
          "id": "value",
          "alias": "Flow"
        }
      ],
      "color": {
        "colorScheme": [
          "#0B6CFF",
          "#3B8BFF",
          "#00A6A6",
          "#4DC3B2",
          "#FF8A00",
          "#FFB347",
          "#7B61FF",
          "#B39DFF"
        ]
      },
      "label": {
        "enable": true,
        "showDimension": true,
        "showValue": true
      },
      "tooltip": {
        "enable": true
      },
      "legend": {
        "enable": true,
        "position": "top"
      }
    }
    
      return <VSeedRender vseed={vseedConfig} />
    }