From 110f4ee5f8c999538eb8ad9fadf212782b960af6 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Fri, 22 Nov 2019 09:46:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBarChart=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=87=8D=E6=96=B0=E8=B5=8B=E5=80=BC=E5=90=8E?= =?UTF-8?q?SerieLabel=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/XCharts/CHANGELOG.md | 3 ++- .../Runtime/Component/Sub/SerieData.cs | 2 +- .../Internal/CoordinateChart_DrawBar.cs | 22 ++++++++++++------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index 526126d3..f94f397d 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -1,7 +1,8 @@ # 更新日志 -* (2019.11.16) 修复`SerieLabel`设置`color`不生效的问题 +* (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题 +* (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题 * (2019.11.12) 发布`v1.0.5`版本 * (2019.11.12) 修复`2018.3`以下版本打开项目报错的问题 * (2019.11.12) 增加`IconStyle`子组件,优化`SerieData`的图标配置 diff --git a/Assets/XCharts/Runtime/Component/Sub/SerieData.cs b/Assets/XCharts/Runtime/Component/Sub/SerieData.cs index 14be0cc4..6cc4e9b3 100644 --- a/Assets/XCharts/Runtime/Component/Sub/SerieData.cs +++ b/Assets/XCharts/Runtime/Component/Sub/SerieData.cs @@ -82,7 +82,7 @@ namespace XCharts /// 标志位置。 /// public Vector3 labelPosition { get; set; } - public bool m_CanShowLabel = true; + private bool m_CanShowLabel = true; /// /// 是否可以显示Label /// diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs index 8e20a161..6e3cad01 100644 --- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs +++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs @@ -23,7 +23,7 @@ namespace XCharts if (!yAxis.show) yAxis = m_YAxises[(serie.axisIndex + 1) % m_YAxises.Count]; var showData = serie.GetDataList(m_DataZoom); - float categoryWidth = yAxis.GetDataWidth(coordinateHeight,showData.Count, m_DataZoom); + float categoryWidth = yAxis.GetDataWidth(coordinateHeight, showData.Count, m_DataZoom); float barGap = GetBarGap(); float totalBarWidth = GetBarTotalWidth(categoryWidth, barGap); float barWidth = serie.GetBarWidth(categoryWidth); @@ -49,6 +49,8 @@ namespace XCharts { seriesHig.Add(0); } + var serieData = showData[i]; + serieData.canShowLabel = true; float value = showData[i].data[1]; float pX = seriesHig[i] + coordinateX + xAxis.runtimeZeroXOffset + yAxis.axisLine.width; float pY = coordinateY + +i * categoryWidth; @@ -59,14 +61,15 @@ namespace XCharts if (isPercentStack) { valueTotal = GetSameStackTotalValue(serie.stack, i); - barHig = value / valueTotal * coordinateWidth; + barHig = valueTotal != 0 ? (value / valueTotal * coordinateWidth) : 0; seriesHig[i] += barHig; } else { valueTotal = xAxis.runtimeMaxValue - xAxis.runtimeMinValue; - barHig = (xAxis.runtimeMinValue > 0 ? value - xAxis.runtimeMinValue : value) - / valueTotal * coordinateWidth; + if (valueTotal != 0) + barHig = (xAxis.runtimeMinValue > 0 ? value - xAxis.runtimeMinValue : value) + / valueTotal * coordinateWidth; seriesHig[i] += barHig; } @@ -132,7 +135,7 @@ namespace XCharts var xAxis = m_XAxises[serie.axisIndex]; if (!xAxis.show) xAxis = m_XAxises[(serie.axisIndex + 1) % m_XAxises.Count]; - float categoryWidth = xAxis.GetDataWidth(coordinateWidth,showData.Count, m_DataZoom); + float categoryWidth = xAxis.GetDataWidth(coordinateWidth, showData.Count, m_DataZoom); float barGap = GetBarGap(); float totalBarWidth = GetBarTotalWidth(categoryWidth, barGap); float barWidth = serie.GetBarWidth(categoryWidth); @@ -158,6 +161,8 @@ namespace XCharts { seriesHig.Add(0); } + var serieData = showData[i]; + serieData.canShowLabel = true; float value = showData[i].data[1]; float pX = coordinateX + i * categoryWidth; float zeroY = coordinateY + yAxis.runtimeZeroYOffset; @@ -169,14 +174,15 @@ namespace XCharts if (isPercentStack) { valueTotal = GetSameStackTotalValue(serie.stack, i); - barHig = value / valueTotal * coordinateHeight; + barHig = valueTotal != 0 ? (value / valueTotal * coordinateHeight) : 0; seriesHig[i] += barHig; } else { valueTotal = yAxis.runtimeMaxValue - yAxis.runtimeMinValue; - barHig = (yAxis.runtimeMinValue > 0 ? value - yAxis.runtimeMinValue : value) - / valueTotal * coordinateHeight; + if (valueTotal != 0) + barHig = (yAxis.runtimeMinValue > 0 ? value - yAxis.runtimeMinValue : value) + / valueTotal * coordinateHeight; seriesHig[i] += barHig; }