diff --git a/CHANGELOG.md b/CHANGELOG.md
index 869d8e74..301499fc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -56,6 +56,7 @@
## master
+* (2022.07.07) 优化`Axis`的`minMaxType`指定为`MinMax`时支持精确到小数
* (2022.07.05) 修复`Chart`里有多个坐标系时绘制异常的问题 (#210)
* (2022.07.04) 增加`Settings`的`axisMaxSplitNumber`参数设置`Axis`的最大分隔段数
* (2022.07.04) 修复`Axis`在设置`offset`后`Tick`绘制位置异常的问题 (#209)
diff --git a/Examples/Example_Dynamic.cs b/Examples/Example_Dynamic.cs
index e2a2f94d..b6a09a0d 100644
--- a/Examples/Example_Dynamic.cs
+++ b/Examples/Example_Dynamic.cs
@@ -11,7 +11,7 @@ namespace XCharts.Example
{
public int maxCacheDataNumber = 100;
public float initDataTime = 2;
- public bool insertDataToHead = true;
+ public bool insertDataToHead = false;
private BaseChart chart;
private float updateTime;
diff --git a/Runtime/Component/Axis/Axis.cs b/Runtime/Component/Axis/Axis.cs
index 8b9f8ee0..b51f9461 100644
--- a/Runtime/Component/Axis/Axis.cs
+++ b/Runtime/Component/Axis/Axis.cs
@@ -89,7 +89,7 @@ namespace XCharts.Runtime
[SerializeField] protected int m_MaxCache = 0;
[SerializeField] protected float m_LogBase = 10;
[SerializeField] protected bool m_LogBaseE = false;
- [SerializeField] protected int m_CeilRate = 0;
+ [SerializeField] protected double m_CeilRate = 0;
[SerializeField] protected bool m_Inverse = false;
[SerializeField] private bool m_Clockwise = true;
[SerializeField] private bool m_InsertDataToHead;
@@ -257,7 +257,7 @@ namespace XCharts.Runtime
/// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated.
/// |最大最小值向上取整的倍率。默认为0时自动计算。
///
- public int ceilRate
+ public double ceilRate
{
get { return m_CeilRate; }
set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); }
diff --git a/Runtime/Component/Axis/AxisHelper.cs b/Runtime/Component/Axis/AxisHelper.cs
index 8a1d31e4..888e30cf 100644
--- a/Runtime/Component/Axis/AxisHelper.cs
+++ b/Runtime/Component/Axis/AxisHelper.cs
@@ -327,7 +327,7 @@ namespace XCharts.Runtime
///
///
///
- public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, int ceilRate = 0)
+ public static void AdjustMinMaxValue(Axis axis, ref double minValue, ref double maxValue, bool needFormat, double ceilRate = 0)
{
if (axis.type == Axis.AxisType.Log)
{
diff --git a/Runtime/Component/Radar/RadarCoord.cs b/Runtime/Component/Radar/RadarCoord.cs
index 6410f661..5b0cb039 100644
--- a/Runtime/Component/Radar/RadarCoord.cs
+++ b/Runtime/Component/Radar/RadarCoord.cs
@@ -103,7 +103,7 @@ namespace XCharts.Runtime
[SerializeField] private bool m_Indicator = true;
[SerializeField] private PositionType m_PositionType = PositionType.Vertice;
[SerializeField] private float m_IndicatorGap = 10;
- [SerializeField] private int m_CeilRate = 0;
+ [SerializeField] private double m_CeilRate = 0;
[SerializeField] private bool m_IsAxisTooltip;
[SerializeField] private Color32 m_OutRangeColor = Color.red;
[SerializeField] private bool m_ConnectCenter = false;
@@ -214,7 +214,7 @@ namespace XCharts.Runtime
/// The ratio of maximum and minimum values rounded upward. The default is 0, which is automatically calculated.
/// |最大最小值向上取整的倍率。默认为0时自动计算。
///
- public int ceilRate
+ public double ceilRate
{
get { return m_CeilRate; }
set { if (PropertyUtil.SetStruct(ref m_CeilRate, value < 0 ? 0 : value)) SetAllDirty(); }
diff --git a/Runtime/Internal/Utilities/ChartHelper.cs b/Runtime/Internal/Utilities/ChartHelper.cs
index 0a60f646..abf9ad4f 100644
--- a/Runtime/Internal/Utilities/ChartHelper.cs
+++ b/Runtime/Internal/Utilities/ChartHelper.cs
@@ -356,20 +356,6 @@ namespace XCharts.Runtime
var alignment = textStyle.GetAlignment(autoAlignment);
UpdateAnchorAndPivotByTextAlignment(alignment, out anchorMin, out anchorMax, out pivot);
var labelObj = AddObject(name, parent, anchorMin, anchorMax, pivot, sizeDelta);
- // TODO: 为了兼容旧版本,这里后面版本可以去掉
- #region temp code
- var oldText = labelObj.GetComponent();
- if (oldText != null)
- {
- GameObject.DestroyImmediate(oldText);
- }
- var oldImage = labelObj.GetComponent();
- if (oldImage != null)
- {
- GameObject.DestroyImmediate(oldImage);
- }
- #endregion
-
var label = GetOrAddComponent(labelObj);
label.text = AddTextObject("Text", label.gameObject.transform, anchorMin, anchorMax, pivot,
sizeDelta, textStyle, theme, autoColor, autoAlignment, label.text);
@@ -624,7 +610,7 @@ namespace XCharts.Runtime
return (Color32) color;
}
- public static double GetMaxDivisibleValue(double max, int ceilRate)
+ public static double GetMaxDivisibleValue(double max, double ceilRate)
{
if (max == 0) return 0;
if (max > -1 && max < 1)
@@ -666,7 +652,7 @@ namespace XCharts.Runtime
}
}
- public static double GetMinDivisibleValue(double min, int ceilRate)
+ public static double GetMinDivisibleValue(double min, double ceilRate)
{
if (min == 0) return 0;
if (min > -1 && min < 1)
diff --git a/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Runtime/Serie/Line/LineHandler.GridCoord.cs
index 410e3e2b..7c24bf37 100644
--- a/Runtime/Serie/Line/LineHandler.GridCoord.cs
+++ b/Runtime/Serie/Line/LineHandler.GridCoord.cs
@@ -148,7 +148,7 @@ namespace XCharts.Runtime
Axis axis;
Axis relativedAxis;
- var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis);
+ chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis);
for (int i = 0; i < count; i++)
{
diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs
index 89b3b6e3..245b8dca 100644
--- a/Runtime/Serie/Serie.cs
+++ b/Runtime/Serie/Serie.cs
@@ -852,8 +852,11 @@ namespace XCharts.Runtime
public override void ClearVerticesDirty()
{
base.ClearVerticesDirty();
- foreach (var serieData in m_Data)
- serieData.ClearVerticesDirty();
+ if (!IsPerformanceMode())
+ {
+ foreach (var serieData in m_Data)
+ serieData.ClearVerticesDirty();
+ }
symbol.ClearVerticesDirty();
lineStyle.ClearVerticesDirty();
itemStyle.ClearVerticesDirty();
@@ -872,8 +875,11 @@ namespace XCharts.Runtime
public override void ClearComponentDirty()
{
base.ClearComponentDirty();
- foreach (var serieData in m_Data)
- serieData.ClearComponentDirty();
+ if (!IsPerformanceMode())
+ {
+ foreach (var serieData in m_Data)
+ serieData.ClearComponentDirty();
+ }
symbol.ClearComponentDirty();
lineStyle.ClearComponentDirty();
itemStyle.ClearComponentDirty();
@@ -900,6 +906,8 @@ namespace XCharts.Runtime
private bool AnySerieDataVerticesDirty()
{
+ if (IsPerformanceMode())
+ return false;
if (this is ISimplifiedSerie)
return false;
foreach (var serieData in m_Data)
@@ -909,6 +917,8 @@ namespace XCharts.Runtime
private bool AnySerieDataComponentDirty()
{
+ if (IsPerformanceMode())
+ return false;
if (this is ISimplifiedSerie)
return false;
foreach (var serieData in m_Data)
@@ -1650,7 +1660,7 @@ namespace XCharts.Runtime
///
public bool IsPerformanceMode()
{
- return m_Large && m_Data.Count > m_LargeThreshold;
+ return m_Large && m_Data.Count >= m_LargeThreshold;
}
public bool IsLegendName(string legendName)
diff --git a/Runtime/Serie/SerieHelper.cs b/Runtime/Serie/SerieHelper.cs
index 74875936..c611f9c1 100644
--- a/Runtime/Serie/SerieHelper.cs
+++ b/Runtime/Serie/SerieHelper.cs
@@ -573,7 +573,7 @@ namespace XCharts.Runtime
///
///
///
- public static void UpdateMinMaxData(Serie serie, int dimension, int ceilRate = 0, DataZoom dataZoom = null)
+ public static void UpdateMinMaxData(Serie serie, int dimension, double ceilRate = 0, DataZoom dataZoom = null)
{
double min = 0, max = 0;
GetMinMaxData(serie, dimension, out min, out max, dataZoom);
@@ -589,7 +589,7 @@ namespace XCharts.Runtime
}
}
- public static void GetAllMinMaxData(Serie serie, int ceilRate = 0, DataZoom dataZoom = null)
+ public static void GetAllMinMaxData(Serie serie, double ceilRate = 0, DataZoom dataZoom = null)
{
double min = 0, max = 0;
GetMinMaxData(serie, out min, out max, dataZoom);