From 07cc02aba2f268cc4b6e0a723acdd71dad974c8e Mon Sep 17 00:00:00 2001 From: MiniPear Date: Sun, 25 Jun 2023 11:55:08 +0800 Subject: [PATCH] fix(line): series gradient (#5225) * fix(line): series gradient * docs(line): add demo for series gradient * fix: ci --- .../static/stocksLineSeriesGradient.png | Bin 0 -> 44744 bytes __tests__/plots/static/index.ts | 1 + .../static/stocks-line-series-gradient.ts | 23 +++++++++++++++++ .../line/demo/line-series-var-color.ts | 24 ++++++++++++++++++ site/examples/general/line/demo/meta.json | 8 ++++++ src/mark/line.ts | 2 +- src/transform/maybeGradient.ts | 5 ++-- 7 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 __tests__/integration/snapshots/static/stocksLineSeriesGradient.png create mode 100644 __tests__/plots/static/stocks-line-series-gradient.ts create mode 100644 site/examples/general/line/demo/line-series-var-color.ts diff --git a/__tests__/integration/snapshots/static/stocksLineSeriesGradient.png b/__tests__/integration/snapshots/static/stocksLineSeriesGradient.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6433f8026190784208ca54308fb2cc74799839 GIT binary patch literal 44744 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 literal 0 HcmV?d00001 diff --git a/__tests__/plots/static/index.ts b/__tests__/plots/static/index.ts index 5931742c68..5302f6bfd6 100644 --- a/__tests__/plots/static/index.ts +++ b/__tests__/plots/static/index.ts @@ -262,3 +262,4 @@ export { mockLegendColor } from './mock-legend-color'; export { mockLegendColorSize } from './mock-legend-color-size'; export { weatherLineMultiAxesLegend } from './weather-line-multi-axes-legend'; export { population2015IntervalDonutTextAnnotationInset } from './population2015-interval-donut-text-annotation-inset'; +export { stocksLineSeriesGradient } from './stocks-line-series-gradient'; diff --git a/__tests__/plots/static/stocks-line-series-gradient.ts b/__tests__/plots/static/stocks-line-series-gradient.ts new file mode 100644 index 0000000000..ce9b0eae67 --- /dev/null +++ b/__tests__/plots/static/stocks-line-series-gradient.ts @@ -0,0 +1,23 @@ +import { G2Spec } from '../../../src'; + +export function stocksLineSeriesGradient(): G2Spec { + return { + type: 'line', + data: { + type: 'fetch', + value: 'data/stocks.csv', + }, + encode: { + x: (d) => new Date(d.date), + y: 'price', + series: 'symbol', + color: 'price', + }, + legend: { size: false }, + style: { + gradient: 'y', + strokeWidth: 10, + shape: 'smooth', + }, + }; +} diff --git a/site/examples/general/line/demo/line-series-var-color.ts b/site/examples/general/line/demo/line-series-var-color.ts new file mode 100644 index 0000000000..fb7d1d6ac4 --- /dev/null +++ b/site/examples/general/line/demo/line-series-var-color.ts @@ -0,0 +1,24 @@ +import { Chart } from '@antv/g2'; + +const chart = new Chart({ + container: 'container', + theme: 'classic', + autoFit: true, +}); + +chart + .line() + .data({ + type: 'fetch', + value: + 'https://gw.alipayobjects.com/os/bmw-prod/cb99c4ab-e0a3-4c76-9586-fe7fa2ff1a8c.csv', + }) + .encode('x', (d) => new Date(d.date)) + .encode('y', 'price') + .encode('series', 'symbol') + .encode('color', 'price') + .style('gradient', 'y') + .style('shape', 'smooth') + .style('strokeWidth', 10); + +chart.render(); diff --git a/site/examples/general/line/demo/meta.json b/site/examples/general/line/demo/meta.json index b88d97abc3..970ac40ae8 100644 --- a/site/examples/general/line/demo/meta.json +++ b/site/examples/general/line/demo/meta.json @@ -76,6 +76,14 @@ }, "screenshot": "https://mdn.alipayobjects.com/mdn/huamei_qa8qxu/afts/img/A*OwgcQoNg8m8AAAAAAAAAAAAADmJ7AQ" }, + { + "filename": "line-series-var-color.ts", + "title": { + "zh": "系列颜色编码折线图", + "en": "Series Variable Color Line Chart" + }, + "screenshot": "https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*EGMKRJE1kyYAAAAAAAAAAAAADmJ7AQ/original" + }, { "filename": "line-threshold.ts", "title": { diff --git a/src/mark/line.ts b/src/mark/line.ts index 1cacfa81f6..917e9cf321 100644 --- a/src/mark/line.ts +++ b/src/mark/line.ts @@ -95,8 +95,8 @@ Line.props = { ], preInference: [ ...basePreInference(), - { type: 'maybeSeries' }, { type: 'maybeGradient' }, + { type: 'maybeSeries' }, ], postInference: [...basePostInference(), ...tooltip1d(), ...tooltipXd()], interaction: { diff --git a/src/transform/maybeGradient.ts b/src/transform/maybeGradient.ts index ecc2826012..fd82553b43 100644 --- a/src/transform/maybeGradient.ts +++ b/src/transform/maybeGradient.ts @@ -10,9 +10,10 @@ export type MaybeGradientOptions = Record; */ export const MaybeGradient: TC = () => { return (I, mark) => { - const { style = {} } = mark; + const { style = {}, encode } = mark; + const { series } = encode; const { gradient } = style; - if (!gradient) return [I, mark]; + if (!gradient || series) return [I, mark]; return [ I, deepMix({}, mark, {