diff --git a/CHANGELOG.md b/CHANGELOG.md index aba2b6c1..9a804879 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # 更新日志 +* (2020.07.08) 优化`Scatter`类型的`Serie`支持`Log`轴#68 * (2020.07.07) 修复`SerieLabel`位置错乱的问题 * (2020.07.07) 增加`Tooltip`的`offset`参数配置偏移 * (2020.07.06) 增加`LiquidChart`水位图 diff --git a/Runtime/Internal/CoordinateChart_DrawScatter.cs b/Runtime/Internal/CoordinateChart_DrawScatter.cs index df02ca79..b676d8c2 100644 --- a/Runtime/Internal/CoordinateChart_DrawScatter.cs +++ b/Runtime/Internal/CoordinateChart_DrawScatter.cs @@ -40,8 +40,8 @@ namespace XCharts if (serieData.IsDataChanged()) dataChanging = true; float pX = m_CoordinateX + xAxis.axisLine.width; float pY = m_CoordinateY + yAxis.axisLine.width; - float xDataHig = (xValue - xAxis.runtimeMinValue) / (xAxis.runtimeMaxValue - xAxis.runtimeMinValue) * m_CoordinateWidth; - float yDataHig = (yValue - yAxis.runtimeMinValue) / (yAxis.runtimeMaxValue - yAxis.runtimeMinValue) * m_CoordinateHeight; + float xDataHig = GetDataHig(xAxis, xValue, m_CoordinateWidth); + float yDataHig = GetDataHig(yAxis, yValue, m_CoordinateHeight); var pos = new Vector3(pX + xDataHig, pY + yDataHig); serie.dataPoints.Add(pos); serieData.runtimePosition = pos; @@ -83,5 +83,19 @@ namespace XCharts RefreshChart(); } } + + private float GetDataHig(Axis axis, float value, float totalWidth) + { + if (axis.IsLog()) + { + int minIndex = axis.runtimeMinLogIndex; + float nowIndex = axis.GetLogValue(value); + return (nowIndex - minIndex) / (axis.splitNumber - 1) * totalWidth; + } + else + { + return (value - axis.runtimeMinValue) / (axis.runtimeMaxValue - axis.runtimeMinValue) * totalWidth; + } + } } } \ No newline at end of file