antvis / G2

📊 The concise and progressive visualization grammar.
https://g2.antv.antgroup.com
MIT License
12.13k stars 1.59k forks source link

配置slider的formatter后,sparkline不再显示 #6137

Closed peaceps closed 4 months ago

peaceps commented 8 months ago

问题描述

配置slider的formatter后,sparkline不再显示

import { Chart } from '@antv/g2';

const data = [
  { year: '1991', value: 3 },
  { year: '1992', value: 4 },
  { year: '1993', value: 3.5 },
  { year: '1994', value: 5 },
  { year: '1995', value: 4.9 },
  { year: '1996', value: 6 },
  { year: '1997', value: 7 },
  { year: '1998', value: 9 },
  { year: '1999', value: 13 },
];

const chart = new Chart({
  container: 'container',
  autoFit: true,
});

chart
  .data(data)
  .encode('x', 'year')
  .encode('y', 'value');

chart
  .line()
  .slider('x', {
    formatter: t => Math.floor(1991 + t * 8).toString() + '年'
  });

chart.render();

重现链接

No response

重现步骤

No response

预期行为

slider label的formatter应该不会影响sparkline的绘制 看代码在slider.ts里有如下判断

if (slider?.x && Object.keys(slider.x).length === 0) {
  ...添加sparkline数据

不是很确定这里检查key.length===0的用意,可能是为了避免和某些配置参数的冲突? 但是感觉比起直接忽略sparkline,暴露不绘制sparkline的选项更友好

平台

屏幕截图或视频(可选)

No response

补充说明(可选)

No response

重现链接

No response

重现步骤

No response

预期行为

No response

平台

屏幕截图或视频(可选)

image

image

补充说明(可选)

No response

qtj4js commented 6 months ago

想问一下,这个任务有考虑解决么?

D15OS commented 5 months ago

是的,只要添加任何配置,sparkline就不会显示

deletenothing commented 5 months ago

你好,发现该issue是我之前PR的代码导致。当时这个判断应该只是想把出现sparkline的条件设置得更严格,此处确实对g2的相关配置项不够了解所致。请问我可否提PR删除该逻辑。 第二,我在review代码的时候发现了另一处数据处理bug。如果slider配置在面积图的第二个图上,sparkline没有起效。也可一并修复。 第三,想问一下,目前的sparkline数据通道只考虑了'y'和 'series'。对于其他数据通道我不怎么熟悉,想问问有无其他情况下需要处理和考虑的。 第四,目前sparkline的颜色和图例以及tooltip之类的不一致。如果我想优化这个,可以给一些提示吗 @pearmini @hustcc

pearmini commented 5 months ago

@deletenothing

请问我可否提PR删除该逻辑。

当然没有问题!你可以先把修复这个问题的 PR 提交上来,然后我根据 PR 再看看你后面的问题 🤣