• 简体中文
  • chartType

    area-by-order-date

    面积图 - 按日期销售额趋势

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "area",
              "dimensions": [
                {
                  "field": "order_date",
                  "alias": "订单日期"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('line'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    bar-by-product-type

    柱状图 - 按产品类型销售额

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "bar",
              "dimensions": [
                {
                  "field": "product_type",
                  "alias": "产品类型"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "xAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('column'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    chart-type-switching

    Switch between line and bar chart types

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "line",
              "dimensions": [
                {
                  "field": "province",
                  "alias": "省份"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('columnParallel'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    column-by-area

    柱形图 - 按区域销售额

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "column",
              "dimensions": [
                {
                  "field": "area",
                  "alias": "区域"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('bar'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    donut-by-customer-type

    环形图 - 按客户类型销售占比

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "donut",
              "dimensions": [
                {
                  "field": "customer_type",
                  "alias": "客户类型"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "size",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('pie'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    line-by-province

    折线图 - 按省份销售额趋势

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "line",
              "dimensions": [
                {
                  "field": "province",
                  "alias": "省份"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('area'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    line-chart

    折线图 - 按省份销售额趋势

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "line",
              "dimensions": [
                {
                  "field": "province",
                  "alias": "省份"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('area'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    pie-by-area

    饼图 - 按区域销售占比

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "pie",
              "dimensions": [
                {
                  "field": "area",
                  "alias": "区域"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "size",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('donut'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    pie-chart-measure-encoding

    饼图度量编码 - 测试 measure-encoding.ts Pie 图表类型

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "pie",
              "dimensions": [
                {
                  "field": "product_type",
                  "alias": "产品类型"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "angle",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('pie'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    rose-by-city

    玫瑰图 - 按城市销售额

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "rose",
              "dimensions": [
                {
                  "field": "city",
                  "alias": "城市"
                }
              ],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "size",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('pie'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    scatter-chart-measure-encoding

    散点图度量编码 - 测试 measure-encoding.ts Scatter 图表类型

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "scatter",
              "dimensions": [],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "xAxis"
                },
                {
                  "field": "profit",
                  "alias": "利润",
                  "encoding": "yAxis"
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('scatter'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }

    scatter-sales-profit

    散点图 - 销售额与利润关系

    Loading...
    import { VBI, VBIChartBuilder } from '@visactor/vbi'
    import { DEMO_CONNECTOR_ID, VSeedRender } from '@components'
    import { useEffect, useState } from 'react'
    
    export default () => {
      const [result, setResult] = useState<any>(null)
    
      useEffect(() => {
        const run = async () => {
          const builder = VBI.chart.create({
            ...{
              "connectorId": "demoSupermarket",
              "chartType": "scatter",
              "dimensions": [],
              "measures": [
                {
                  "field": "sales",
                  "alias": "销售额",
                  "encoding": "xAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                },
                {
                  "field": "profit",
                  "alias": "利润",
                  "encoding": "yAxis",
                  "aggregate": {
                    "func": "sum"
                  }
                }
              ],
              "whereFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "havingFilter": {
                "id": "root",
                "op": "and",
                "conditions": []
              },
              "theme": "light",
              "locale": "zh-CN",
              "version": 1,
              "limit": 10
            },
            connectorId: DEMO_CONNECTOR_ID,
          })
          const applyBuilder = (builder: VBIChartBuilder) => { builder.chartType.changeChartType('bar'); }
          await applyBuilder(builder)
          setResult(await builder.buildVSeed())
        }
        run()
      }, [])
    
      if (!result) return <div>Loading...</div>
    
      return <VSeedRender vseed={result} />
    }