如何配置markLine文本标签的位置?

问题描述 投票:0回答:1

对于像 (https://www.visactor.io/vchart/demo/marker/mark-line-basic) 这样使用 markLine 进行轴空间定位的图表,mark line image 我想让markLine中的标签显示线的开头、线的结尾或线段的中间,我怎样才能实现这一点?

charts label visualization google-maps-markers axis-labels
1个回答
0
投票

解决方案

不同的图表库解决方案不同,根据你给的demo,配置

markLine.label.position
到想要的场景即可。

  • markLine.label.position
    用于配置标记线的标签位置(标签相对于线的位置)。

    • 当文本标签显示在行首时,
      position
      可以配置为
      'start'
    • 当文本标签显示在行尾时,
      position
      可以配置为
      'end'
    • 当文本标签显示在行的中间时,
      position 
      可以配置为
      'middle'

代码示例

const spec = {
  type: 'scatter',
  padding: [12, 20, 12, 12],
  xField: 'x',
  yField: 'y',
  sizeField: 'z',
  size: {
    type: 'linear',
    range: [20, 80]
  },
  axes: [
    { orient: 'bottom', type: 'linear', min: 60, max: 95 },
    { orient: 'left', type: 'linear', min: 0, max: 200 }
  ],
  point: {
    style: {
      fillOpacity: 0.25,
      lineWidth: 1,
      stroke: '#6690F2',
      fill: '#6690F2'
    }
  },
  label: {
    visible: true,
    position: 'center',
    overlap: {
      avoidBaseMark: false
    },
    style: {
      stroke: '#fff',
      lineWidth: 1
    }
  },
  markLine: [
    {
      x: 65,
      label: {
        visible: true,
        position: 'end',
        text: 'Safe fat intake 65g/day',
        style: {
          textAlign: 'left',
          textBaseline: 'top',
          fill: '#000',
          dx: 10
        },
        labelBackground: {
          visible: false
        }
      },
      line: {
        style: {
          stroke: '#000',
          lineDash: [0]
        }
      }
    },
    {
      y: 50,
      label: {
        visible: true,
        position: 'end',
        text: 'Safe sugar intake 50g/day',
        style: {
          textAlign: 'right',
          textBaseline: 'bottom',
          fill: '#000'
        },
        labelBackground: {
          visible: false
        }
      },
      line: {
        style: {
          stroke: '#000',
          lineDash: [0]
        }
      }
    }
  ],
  tooltip: {
    mark: {
      title: {
        value: datum => datum.country
      }
    }
  },
  data: {
    id: 'data',
    values: [
      { x: 95, y: 95, z: 13.8, name: 'BE', country: 'Belgium' },
      { x: 86.5, y: 102.9, z: 14.7, name: 'DE', country: 'Germany' },
      { x: 80.8, y: 91.5, z: 15.8, name: 'FI', country: 'Finland' },
      { x: 80.4, y: 102.5, z: 12, name: 'NL', country: 'Netherlands' },
      { x: 80.3, y: 86.1, z: 11.8, name: 'SE', country: 'Sweden' },
      { x: 78.4, y: 70.1, z: 16.6, name: 'ES', country: 'Spain' },
      { x: 74.2, y: 68.5, z: 14.5, name: 'FR', country: 'France' },
      { x: 73.5, y: 83.1, z: 10, name: 'NO', country: 'Norway' },
      { x: 71, y: 93.2, z: 24.7, name: 'UK', country: 'United Kingdom' },
      { x: 69.2, y: 57.6, z: 10.4, name: 'IT', country: 'Italy' },
      { x: 68.6, y: 20, z: 16, name: 'RU', country: 'Russia' },
      { x: 65.5, y: 126.4, z: 35.3, name: 'US', country: 'United States' },
      { x: 65.4, y: 50.8, z: 28.5, name: 'HU', country: 'Hungary' },
      { x: 63.4, y: 51.8, z: 15.4, name: 'PT', country: 'Portugal' },
      { x: 64, y: 82.9, z: 31.3, name: 'NZ', country: 'New Zealand' }
    ]
  }
};

结果

在线演示:https://codesandbox.io/s/mark-line-basic-srhwq3

位置:“开始”:

位置:“中间”:

位置:“结束”:

相关文档

markLine演示:https://www.visactor.io/vchart/demo/marker/mark-line-basic

markLine教程:https://www.visactor.io/vchart/guide/tutorial_docs/Chart_Concepts/marker

相关api:https://www.visactor.io/vchart/option/barChart#markLine.label.position

github:https://github.com/VisActor/VChart

© www.soinside.com 2019 - 2024. All rights reserved.