#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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
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')
}
applyBuilder(builder)
setResult(await builder.buildVSeed())
}
run()
}, [])
if (!result) return <div>Loading...</div>
return <VSeedRender vseed={result} />
}