diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts index 630fa7afe88..638b0948c02 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts @@ -198,6 +198,7 @@ export default function transformProps( zoomable, stackDimension, }: EchartsTimeseriesFormData = { ...DEFAULT_FORM_DATA, ...formData }; + const refs: Refs = {}; const groupBy = ensureIsArray(groupby); const labelMap: { [key: string]: string[] } = Object.entries( @@ -299,7 +300,24 @@ export default function transformProps( const entryName = String(entry.name || ''); const seriesName = inverted[entryName] || entryName; - const colorScaleKey = getOriginalSeries(seriesName, array); + + let colorScaleKey = getOriginalSeries(seriesName, array); + + // If this series name exactly matches a time compare value, it's a time-shifted series + // and we need to find the corresponding original series for color matching + if (array && array.includes(seriesName)) { + // Find the original series (first non-time-compare series) + const originalSeries = rawSeries.find(s => { + const sName = inverted[String(s.name || '')] || String(s.name || ''); + return !array.includes(sName); + }); + if (originalSeries) { + const originalSeriesName = + inverted[String(originalSeries.name || '')] || + String(originalSeries.name || ''); + colorScaleKey = getOriginalSeries(originalSeriesName, array); + } + } const transformedSeries = transformSeries( entry,