antvis/G2

coordinate reflect、scale、translate、rotate #4913

hustcc posted onGitHub

丰富 G2 5.0 中 coordinate 的基本操作,当前只有 transpose,还有:

  • reflect:镜像
  • scale:x、y 方向缩放 reflect = scale(1, -1)
  • translate:移动
  • rotate:旋转

需要解决 #3305 所遇到的问题。closed #3305


reflect 其实不太需要,改变 scale 的 range 就行了:

image

/**
 * A recreation of this demo: https://observablehq.com/@d3/bar-chart
 */
import { Chart } from '@antv/g2';

const chart = new Chart({
  container: 'container',
  theme: 'classic',
});

chart
  .interval()
  .data({
    type: 'fetch',
    value:
      'https://gw.alipayobjects.com/os/bmw-prod/fb9db6b7-23a5-4c23-bbef-c54a55fee580.csv',
  })
  .encode('x', 'letter')
  .encode('y', 'frequency')
  .axis('y', { labelFormatter: '.0%' })
  .scale('y', { range:[0, 1] });  // 改变 range

chart.render();
posted by pearmini almost 2 years ago

scale,translate 和 rotate 目前看来没有具体的使用场景:并不会组合出更多的图表。相反会带来更好的维护成本:根据不同坐标系绘制不同的组件。

posted by pearmini almost 2 years ago

scale.range 可以解决翻转的问题,但是合理吗?坐标系具备有 缩放、平移、选装的操作不是挺合理吗?

另外 为啥会带来维护成本?

posted by hustcc almost 2 years ago
  • scale.range 本身就可以用来翻转,特别是对于没有坐标系机制的图表库。
  • 这样坐标系应用于图形很简单,但是应用于组件很麻烦:需要考虑不同坐标系下的绘制结果,会有很多分支判断(特别是坐标系又可以组合,不同的情况又不同)。更好的做法是直接使用 G 的相机能力,类似 G6 的图的旋转、平移等。
posted by pearmini almost 2 years ago

好的, 先处理优先级高的部分,关于 coordinate 的能力我们后续再讨论。

posted by hustcc almost 2 years ago

Fund this Issue

$0.00
Funded

Pull requests