diff --git a/Documentation~/en/api.md b/Documentation~/en/api.md index 1ab1902e..f7964d7a 100644 --- a/Documentation~/en/api.md +++ b/Documentation~/en/api.md @@ -443,6 +443,7 @@ The axis in rectangular coordinate. |Clone()||public Axis Clone()| |Copy()||public void Copy(Axis axis)| |GetAddedDataCount()||public int GetAddedDataCount()
get the history data count. | +|GetCategoryPosition()||public Vector3 GetCategoryPosition(int categoryIndex, int dataCount = 0)| |GetData()||public string GetData(int index)
获得指定索引的类目数据 | |GetData()||public string GetData(int index, DataZoom dataZoom)
获得在dataZoom范围内指定索引的类目数据 | |GetDistance()||public float GetDistance(double value, float axisLength = 0)
获得值在坐标轴上的距离 | diff --git a/Documentation~/en/configuration.md b/Documentation~/en/configuration.md index f225256a..e4adb2bf 100644 --- a/Documentation~/en/configuration.md +++ b/Documentation~/en/configuration.md @@ -422,6 +422,7 @@ The axis in rectangular coordinate. |inverse|false||Whether the axis are reversed or not. Invalid in `Category` axis. |clockwise|true||Whether the positive position of axis is in clockwise. True for clockwise by default. |insertDataToHead|||Whether to add new data at the head or at the end of the list. +|minCategorySpacing|0|v3.11.0|The minimum spacing between categories. |icons|||类目数据对应的图标。 |data|||Category data, available in type: 'Category' axis. |axisLine|||axis Line. [AxisLine](#axisline)| diff --git a/Documentation~/zh/api.md b/Documentation~/zh/api.md index 2036f211..111f3836 100644 --- a/Documentation~/zh/api.md +++ b/Documentation~/zh/api.md @@ -443,6 +443,7 @@ slug: /api |Clone()||public Axis Clone()| |Copy()||public void Copy(Axis axis)| |GetAddedDataCount()||public int GetAddedDataCount()
获得添加过的历史数据总数 | +|GetCategoryPosition()||public Vector3 GetCategoryPosition(int categoryIndex, int dataCount = 0)| |GetData()||public string GetData(int index)
获得指定索引的类目数据 | |GetData()||public string GetData(int index, DataZoom dataZoom)
获得在dataZoom范围内指定索引的类目数据 | |GetDistance()||public float GetDistance(double value, float axisLength = 0)
获得值在坐标轴上的距离 | diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 0b83b196..baaf95b6 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -73,6 +73,7 @@ slug: /changelog ## master +* (2024.06.09) 增加`Axis`的`m_MinCategorySpacing`设置类目轴默认的最小类目间距 * (2024.06.09) 修复`Tooltip`的`Cross`在`Axis`是类目轴并且开启`DataZoom`的情况下指示位置不准确的问题 * (2024.06.06) 修复`Serie`在`Clone`时动画异常问题 (#320) * (2024.06.04) 修复`Serie`的`state`在代码动态设置时不刷新的问题 diff --git a/Documentation~/zh/configuration.md b/Documentation~/zh/configuration.md index 633dc4cf..25445c3f 100644 --- a/Documentation~/zh/configuration.md +++ b/Documentation~/zh/configuration.md @@ -415,6 +415,7 @@ import APITable from '@site/src/components/APITable'; |inverse|false||是否反向坐标轴。在类目轴中无效。 |clockwise|true||刻度增长是否按顺时针,默认顺时针。 |insertDataToHead|||添加新数据时是在列表的头部还是尾部加入。 +|minCategorySpacing|0|v3.11.0|类目之间的最小间距。 |icons|||类目数据对应的图标。 |data|||类目数据,在类目轴(type: 'category')中有效。 |axisLine|||坐标轴轴线。 [AxisLine](#axisline)| diff --git a/Editor/MainComponents/AxisEditor.cs b/Editor/MainComponents/AxisEditor.cs index fdc840b6..78199d65 100644 --- a/Editor/MainComponents/AxisEditor.cs +++ b/Editor/MainComponents/AxisEditor.cs @@ -64,6 +64,7 @@ namespace XCharts.Editor if (type == Axis.AxisType.Category) { PropertyField("m_MaxCache"); + PropertyField("m_MinCategorySpacing"); PropertyField("m_BoundaryGap"); } else diff --git a/Runtime/Component/Axis/Axis.cs b/Runtime/Component/Axis/Axis.cs index 3d22b302..83fc972a 100644 --- a/Runtime/Component/Axis/Axis.cs +++ b/Runtime/Component/Axis/Axis.cs @@ -99,6 +99,7 @@ namespace XCharts.Runtime [SerializeField] protected bool m_Inverse = false; [SerializeField] private bool m_Clockwise = true; [SerializeField] private bool m_InsertDataToHead; + [SerializeField][Since("v3.11.0")] private float m_MinCategorySpacing = 0; [SerializeField] protected List m_Icons = new List(); [SerializeField] protected List m_Data = new List(); [SerializeField] protected AxisLine m_AxisLine = AxisLine.defaultAxisLine; @@ -406,6 +407,15 @@ namespace XCharts.Runtime get { return m_InsertDataToHead; } set { if (PropertyUtil.SetStruct(ref m_InsertDataToHead, value)) SetAllDirty(); } } + /// + /// The minimum spacing between categories. + /// ||类目之间的最小间距。 + /// + public float minCategorySpacing + { + get { return m_MinCategorySpacing; } + set { if (PropertyUtil.SetStruct(ref m_MinCategorySpacing, value)) SetAllDirty(); } + } public override bool vertsDirty { diff --git a/Runtime/Component/Axis/AxisHelper.cs b/Runtime/Component/Axis/AxisHelper.cs index b020e981..5f2c12f9 100644 --- a/Runtime/Component/Axis/AxisHelper.cs +++ b/Runtime/Component/Axis/AxisHelper.cs @@ -65,8 +65,10 @@ namespace XCharts.Runtime if (axis.splitNumber <= 0) { var eachWid = coordinateWid / dataCount; - //var min = ((axis is YAxis) || (axis is ZAxis3D)) ? 20 : 80; - var min = 20; + + var min = axis.minCategorySpacing > 0 + ? axis.minCategorySpacing + : (Mathf.Abs(axis.context.dire.y) < 0.01 ? 80 : 20); if (eachWid > min) return dataCount; var tick = Mathf.CeilToInt(min / eachWid); return tick <= 1 ? dataCount : (int)(dataCount / tick);