dualAxis

measures

Info

配置双轴图指标

度量不设置encoding 的时候,第一个指标应用于主轴, 第二个指标及其之后的指标, 一起应用于次轴. 绘制一个普通双轴图. 通过设置 parentId 实现指标分组,展示在不同的视图中

双轴图默认效果

export const SimpleDualAxisChart = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    measures: [
      { id: 'sales', alias: '销售额' },
      { id: 'profit', alias: '利润' },
    ],
    dataset: [
      { date: '2019', profit: 10, sales: 200 },
      { date: '2020', profit: 30, sales: 600 },
      { date: '2021', profit: 30, sales: 600 },
      { date: '2022', profit: 50, sales: 1000 },
      { date: '2023', profit: 40, sales: 800 },
    ],
  }
  return <VChartRender vseed={vseed} />
})

双轴图

export const DualAxisChart = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    measures: [
      { id: 'sales', alias: '销售额', encoding: 'primaryYAxis' },
      { id: 'profit', alias: '利润', encoding: 'secondaryYAxis' },
    ],
    dataset: [
      { date: '2019', profit: 10, sales: 200 },
      { date: '2020', profit: 30, sales: 600 },
      { date: '2021', profit: 30, sales: 600 },
      { date: '2022', profit: 50, sales: 1000 },
      { date: '2023', profit: 40, sales: 800 },
    ],
  }
  return <VChartRender vseed={vseed} />
})

组合双轴图

export const CombinationDualAxisChart = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    measures: [
      { id: 'profit', alias: '利润', encoding: 'primaryYAxis', parentId: 'first' },
      { id: 'sales', alias: '销售额', encoding: 'secondaryYAxis', parentId: 'first' },
      { id: 'ratio', alias: '比率', encoding: 'primaryYAxis', parentId: 'second' },
      { id: 'returnRatio', alias: '回报率', encoding: 'secondaryYAxis', parentId: 'second' },
    ],
    dataset: [
      { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
      { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
      { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
      { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
      { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
    ],
    dimensions: [
      {
        id: 'date',
        alias: '日期',
      },
    ],
  }
  return <PivotChart vseed={vseed} />
})

dimensions

透视组合双轴图

export const PivotDualAxisChart = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    dimensions: [
      {
        id: 'date',
        alias: '日期',
      },
      {
        id: 'type',
        alias: '类型',
        encoding: 'row',
      },
      {
        id: 'test',
        alias: '测试',
        encoding: 'column',
      },
    ],
    dataset: [
      { date: '2019', type: 'A', test: 'TEST-A', profit: 10, sales: 100, ratio: 1, returnRatio: 301 },
      { date: '2020', type: 'A', test: 'TEST-A', profit: 30, sales: 3200, ratio: 2, returnRatio: 30 },
      { date: '2021', type: 'A', test: 'TEST-A', profit: 30, sales: 300, ratio: 3, returnRatio: 303 },
      { date: '2022', type: 'A', test: 'TEST-A', profit: 50, sales: 2400, ratio: 4, returnRatio: 34 },
      { date: '2023', type: 'A', test: 'TEST-A', profit: 40, sales: 500, ratio: 5, returnRatio: 305 },
      { date: '2019', type: 'A', test: 'TEST-D', profit: 10, sales: 100, ratio: 5, returnRatio: 30 },
      { date: '2020', type: 'A', test: 'TEST-D', profit: 30, sales: 3200, ratio: 4, returnRatio: 302 },
      { date: '2021', type: 'A', test: 'TEST-D', profit: 30, sales: 300, ratio: 3, returnRatio: 30 },
      { date: '2022', type: 'A', test: 'TEST-D', profit: 50, sales: 2400, ratio: 2, returnRatio: 304 },
      { date: '2023', type: 'A', test: 'TEST-D', profit: 40, sales: 500, ratio: 1, returnRatio: 35 },

      { date: '2019', type: 'B', test: 'TEST-A', profit: 10, sales: 100, ratio: 11, returnRatio: 301 },
      { date: '2020', type: 'B', test: 'TEST-A', profit: 30, sales: 3200, ratio: 12, returnRatio: 30 },
      { date: '2021', type: 'B', test: 'TEST-A', profit: 30, sales: 300, ratio: 13, returnRatio: 303 },
      { date: '2022', type: 'B', test: 'TEST-A', profit: 50, sales: 2400, ratio: 14, returnRatio: 34 },
      { date: '2023', type: 'B', test: 'TEST-A', profit: 40, sales: 500, ratio: 15, returnRatio: 305 },
      { date: '2019', type: 'B', test: 'TEST-D', profit: 10, sales: 100, ratio: 51, returnRatio: 30 },
      { date: '2020', type: 'B', test: 'TEST-D', profit: 30, sales: 3200, ratio: 51, returnRatio: 32 },
      { date: '2021', type: 'B', test: 'TEST-D', profit: 30, sales: 300, ratio: 52, returnRatio: 303 },
      { date: '2022', type: 'B', test: 'TEST-D', profit: 50, sales: 2400, ratio: 5, returnRatio: 34 },
      { date: '2023', type: 'B', test: 'TEST-D', profit: 40, sales: 500, ratio: 1, returnRatio: 35 },
    ],
    measures: [
      { id: 'profit', alias: '利润', encoding: 'primaryYAxis', parentId: 'first' },
      { id: 'sales', alias: '销售额', encoding: 'secondaryYAxis', parentId: 'first' },
      { id: 'ratio', alias: '比率', encoding: 'primaryYAxis', parentId: 'second' },
      { id: 'returnRatio', alias: '回报率', encoding: 'secondaryYAxis', parentId: 'second' },
    ],
  }
  return <PivotChart vseed={vseed} />
})

设置子图类型

双轴图

export const DualChartType = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    dataset: [
      { date: '2019', profit: 20, sales: 100 },
      { date: '2020', profit: 30, sales: 600 },
      { date: '2021', profit: 30, sales: 600 },
      { date: '2022', profit: 50, sales: 500 },
      { date: '2023', profit: 10, sales: 800 },
    ],
    measures: [
      { id: 'sales', alias: '销售额', encoding: 'primaryYAxis', chartType: 'area' },
      { id: 'profit', alias: '利润', encoding: 'secondaryYAxis', chartType: 'column' },
    ],
  }
  return <VChartRender vseed={vseed} />
})

组合双轴图

export const DualChartTypeArray = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    measures: [
      { id: 'profit', alias: '利润', encoding: 'primaryYAxis', parentId: 'first', chartType: 'area' },
      { id: 'sales', alias: '销售额', encoding: 'secondaryYAxis', parentId: 'first', chartType: 'scatter' },
      { id: 'ratio', alias: '比率', encoding: 'primaryYAxis', parentId: 'second', chartType: 'column' },
      { id: 'returnRatio', alias: '回报率', encoding: 'secondaryYAxis', parentId: 'second', chartType: 'line' },
    ],
    dataset: [
      { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
      { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
      { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
      { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
      { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
    ],
    dimensions: [
      {
        id: 'date',
        alias: '日期',
      },
    ],
  }
  return <PivotChart vseed={vseed} />
})

primaryYAxis & secondaryYAxis

export const DualYAxisArray = memo(() => {
  const vseed: VSeed = {
    chartType: 'dualAxis',
    primaryYAxis: [
      {
        title: {
          visible: true,
          titleText: '利润',
        },
      },
      {
        title: {
          visible: true,
          titleText: '比率',
        },
      },
    ],
    secondaryYAxis: [
      {
        title: {
          visible: true,
          titleText: '销售额',
        },
      },
      {
        title: {
          visible: true,
          titleText: '回报率',
        },
      },
    ],
    measures: [
      { id: 'profit', alias: '利润', encoding: 'primaryYAxis', parentId: 'first' },
      { id: 'sales', alias: '销售额', encoding: 'secondaryYAxis', parentId: 'first' },
      { id: 'ratio', alias: '比率', encoding: 'primaryYAxis', parentId: 'second' },
      { id: 'returnRatio', alias: '回报率', encoding: 'secondaryYAxis', parentId: 'second' },
    ],
    dataset: [
      { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
      { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
      { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
      { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
      { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
    ],
    dimensions: [
      {
        id: 'date',
        alias: '日期',
      },
    ],
  }
  return <PivotChart vseed={vseed} />
})