diff --git a/Runtime/Component/VisualMap/VisualMapHelper.cs b/Runtime/Component/VisualMap/VisualMapHelper.cs index e0b6c65f..42d05c2c 100644 --- a/Runtime/Component/VisualMap/VisualMapHelper.cs +++ b/Runtime/Component/VisualMap/VisualMapHelper.cs @@ -76,7 +76,9 @@ namespace XCharts.Runtime if (axis.IsCategory() && axis.boundaryGap) { float startX = grid.context.x + axis.context.scaleWidth / 2; - value = (int)(min + (pos.x - startX) / (grid.context.width - axis.context.scaleWidth) * (max - min)); + value = (min + (pos.x - startX) / (grid.context.width - axis.context.scaleWidth) * (max - min)); + if (visualMap.IsPiecewise()) + value = (int)value; } else { @@ -87,17 +89,19 @@ namespace XCharts.Runtime { min = relativedAxis.context.minValue; max = relativedAxis.context.maxValue; - if (relativedAxis.IsCategory() && relativedAxis.boundaryGap) { float startY = grid.context.y + relativedAxis.context.scaleWidth / 2; - value = (int)(min + (pos.y - startY) / (grid.context.height - relativedAxis.context.scaleWidth) * (max - min)); + value = (min + (pos.y - startY) / (grid.context.height - relativedAxis.context.scaleWidth) * (max - min)); + if (visualMap.IsPiecewise()) + value = (int)value; } else { value = min + (pos.y - grid.context.y) / grid.context.height * (max - min); } } + var color = visualMap.GetColor(value); if (ChartHelper.IsClearColor(color)) { diff --git a/Runtime/Serie/Line/LineHelper.cs b/Runtime/Serie/Line/LineHelper.cs index ff1f71f6..dcb9050a 100644 --- a/Runtime/Serie/Line/LineHelper.cs +++ b/Runtime/Serie/Line/LineHelper.cs @@ -97,15 +97,13 @@ namespace XCharts.Runtime if (UGLHelper.GetIntersection(lp, tp, axisStartPos, axisEndPos, ref ip)) tp = ip; } + var zp = isY ? new Vector3(zero, tp.y) : new Vector3(tp.x, zero); if (isVisualMapGradient) { - color = VisualMapHelper.GetLineGradientColor(visualMap, tp, grid, axis, relativedAxis, areaColor); - toColor = color; - lerp = false; + color = VisualMapHelper.GetLineGradientColor(visualMap, zp, grid, axis, relativedAxis, areaColor); + toColor = VisualMapHelper.GetLineGradientColor(visualMap, tp, grid, axis, relativedAxis, areaToColor); + lerp = true; } - - var zp = isY ? new Vector3(zero, tp.y) : new Vector3(tp.x, zero); - if (i > 0) { if ((lp.y - zero > 0 && tp.y - zero < 0) || (lp.y - zero < 0 && tp.y - zero > 0))