antvis/G2

开启.style('gradient', 'color')之后slider拖动报错, 例子如下 #5230

pearmini posted onGitHub

AntV Open Source Contribution Plan(可选)

  • 我同意将这个 Issue 参与 OSCP 计划

Issue 类型

初级任务

任务介绍

以下代码在拖动 Slider 时候报错,期望修复这个问题。

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

chart.options({
  type: "line",
  data: [
    {
      area: "东北",
      province: "长春",
      customer: "方先生",
      value: 10000,
      value2: 60000,
    },
    {
      area: "东北",
      province: "辽宁",
      customer: "方先生",
      value: 10000,
      value2: 60000,
    },
    {
      area: "",
      province: "辽宁",
      customer: "方先生",
      value: null,
      value2: null,
    },
    {
      area: "华东",
      province: "上海",
      customer: "林小姐",
      value: 10000,
      value2: 10000,
    },
    {
      area: "华东",
      province: "山东",
      customer: "陈先生",
      value: 40000,
      value2: 160000,
    },
    {
      area: "华东",
      province: "江苏",
      customer: "王先生",
      value: 10000,
      value2: 50000,
    },
    {
      area: "华东",
      province: "江西",
      customer: "成先生",
      value: 10000,
      value2: 30000,
    },
  ],
  encode: {
    x: (x) => `(${x.area}, ${x.province})`,
    y: "value",
    color: "value",
  },
  scale: { color: { type: "linear", unknown: "#fff" } },
  style: { gradient: "color", lineWidth: 2 },
  slider: { x: true },
})

chart.render();

参考说明

可能和 Slider 拖动的时候产生的 null 数据有关系


认领

posted by li1615882553 over 1 year ago

定位到错误:当前x轴是point类型的比例尺,Slider拖动后比例尺中只保留当前范围的domain,但是数据中是全部的,所以在用全部数据做映射的时候,导致映射后的数组seriesX产生了NaN,然后在生成渐变色映射到0-100范围的时候,NaN就映射成了undefiend

计算seriesX: https://github.com/antvis/G2/blob/aa09cc02a5e499781affd292191c11c866216690/src/runtime/plot.ts#L767-L789 seriesX映射到0-100,并生成渐变色: https://github.com/antvis/G2/blob/aa09cc02a5e499781affd292191c11c866216690/src/shape/utils.ts#L144-L171

posted by li1615882553 over 1 year ago

@li1615882553 那可以把 NaN 过滤掉再生成渐变色吗?

posted by pearmini over 1 year ago

Fund this Issue

$0.00
Funded

Pull requests