From 53c7ddf9d4148a35555adcef56a6875c254e5653 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Mon, 11 Dec 2023 13:43:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`Serie`=E6=B7=BB=E5=8A=A0`dou?= =?UTF-8?q?ble.MaxValue`=E6=97=B6=E5=9D=90=E6=A0=87=E7=BB=98=E5=88=B6?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Runtime/Component/Axis/AxisHandler.cs | 7 +++++-- Runtime/Component/Axis/AxisHelper.cs | 19 +++++++++---------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 8b7a3567..9112d20c 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -70,6 +70,7 @@ slug: /changelog ## master +* (2023.12.11) 修复`Serie`添加`double.MaxValue`时坐标绘制失败的问题 * (2023.12.10) 增加`Serie`的`minShowLabel`可隐藏小于指定值的`label` * (2023.12.09) 增加`LevelStyle`的`LineStyle`和`depth`支持 * (2023.12.09) 增加`Serie`的`Link`可用于桑基图添加节点边关系 diff --git a/Runtime/Component/Axis/AxisHandler.cs b/Runtime/Component/Axis/AxisHandler.cs index e09bdd9f..f79d2a86 100644 --- a/Runtime/Component/Axis/AxisHandler.cs +++ b/Runtime/Component/Axis/AxisHandler.cs @@ -267,7 +267,11 @@ namespace XCharts if (axis.interval == 0) { - if (axis.splitNumber > 0) + if (range >= double.MaxValue / 2) + { + tick = range / 4; + } + else if (axis.splitNumber > 0) { tick = range / axis.splitNumber; } @@ -865,7 +869,6 @@ namespace XCharts for (int i = 0; i < size; i++) { var scaleWidth = AxisHelper.GetScaleWidth(axis, axisLength, axis.IsTime() ? i : i + 1, dataZoom); - if (axis.boundaryGap && axis.axisTick.alignWithLabel) current -= scaleWidth / 2; diff --git a/Runtime/Component/Axis/AxisHelper.cs b/Runtime/Component/Axis/AxisHelper.cs index b70c62b4..d9a5c966 100644 --- a/Runtime/Component/Axis/AxisHelper.cs +++ b/Runtime/Component/Axis/AxisHelper.cs @@ -245,21 +245,20 @@ namespace XCharts.Runtime { if (index < 0) return 0; - - int num = GetScaleNumber(axis, coordinateWidth, dataZoom); - int splitNum = GetSplitNumber(axis, coordinateWidth, dataZoom); - if (num <= 0) - num = 1; - if (axis.IsTime() || axis.IsValue()) { var value = axis.GetLabelValue(index); var lastValue = axis.GetLabelValue(index - 1); - return axis.context.minMaxRange == 0 ? 0 : - (float)(coordinateWidth * (value - lastValue) / axis.context.minMaxRange); + var width = axis.context.minMaxRange == 0 ? 0 : + (float)(coordinateWidth * ((value - lastValue) / axis.context.minMaxRange)); + return width; } else { + int num = GetScaleNumber(axis, coordinateWidth, dataZoom); + int splitNum = GetSplitNumber(axis, coordinateWidth, dataZoom); + if (num <= 0) + num = 1; var data = axis.GetDataList(dataZoom); if (axis.IsCategory() && data.Count > 0 && splitNum > 0) { @@ -344,7 +343,7 @@ namespace XCharts.Runtime int maxSplit = 0; maxValue = ChartHelper.GetMaxLogValue(maxValue, axis.logBase, axis.logBaseE, out maxSplit); minValue = ChartHelper.GetMinLogValue(minValue, axis.logBase, axis.logBaseE, out minSplit); - + var splitNumber = maxSplit + minSplit; if (splitNumber > 15) splitNumber = 15; @@ -633,7 +632,7 @@ namespace XCharts.Runtime var startX = grid.context.x + yAxis.offset; if (yAxis.IsRight()) startX += grid.context.width; - else if (yAxis.axisLine.onZero && relativedAxis != null && relativedAxis.IsValue() + else if (yAxis.axisLine.onZero && relativedAxis != null && relativedAxis.IsValue() && relativedAxis.gridIndex == yAxis.gridIndex) startX += relativedAxis.context.offset; return startX;