增加3D坐标系对类目轴的支持

This commit is contained in:
monitor1394
2024-05-29 08:33:00 +08:00
parent 1e6140a138
commit 042f9d3c01
4 changed files with 20 additions and 11 deletions

View File

@@ -73,10 +73,12 @@ slug: /changelog
## master ## master
* (2024.05.29) 增加`3D`坐标系对类目轴的支持
* (2024.05.19) 优化`Editor`下的编辑性能
* (2024.05.09) 增加`JsonUtil`工具类 * (2024.05.09) 增加`JsonUtil`工具类
* (2024.04.23) 修复`ConvertXYAxis()`多次调用后图表异常的问题 * (2024.04.23) 修复`ConvertXYAxis()`多次调用后图表异常的问题
* (2024.04.22) 修复`DataZoom`控制多个轴时的`GridCoord`获取可能不正确的问题 (#317) * (2024.04.22) 修复`DataZoom`控制多个轴时的`GridCoord`获取可能不正确的问题 (#317)
* (2024.04.22) 增加`GridCoord3D`3D坐标系 * (2024.04.22) 增加`3D`坐标系
* (2024.04.15) 优化`DateTimeUtil`时间戳转`DateTime`接口时区的问题 * (2024.04.15) 优化`DateTimeUtil`时间戳转`DateTime`接口时区的问题
* (2024.04.15) 优化`GridCoord`在开启`GridLayout`时也显示`Left` `Right` `Top` `Bottom`参数 (#316) * (2024.04.15) 优化`GridCoord`在开启`GridLayout`时也显示`Left` `Right` `Top` `Bottom`参数 (#316)
* (2024.04.14) 修复`Tooltip``Cross`在开启`DataZoom`的情况下`label`位置不正确的问题 (#315) * (2024.04.14) 修复`Tooltip``Cross`在开启`DataZoom`的情况下`label`位置不正确的问题 (#315)

View File

@@ -147,7 +147,7 @@ namespace XCharts
if (axis.IsCategory()) if (axis.IsCategory())
{ {
axis.context.minValue = 0; axis.context.minValue = 0;
axis.context.maxValue = SeriesHelper.GetMaxSerieDataCount(chart.series) - 1; axis.context.maxValue = axis.data.Count > 0 ? axis.data.Count - 1 : SeriesHelper.GetMaxSerieDataCount(chart.series) - 1;
axis.context.minMaxRange = axis.context.maxValue; axis.context.minMaxRange = axis.context.maxValue;
return; return;
} }
@@ -373,6 +373,7 @@ namespace XCharts
{ {
Axis axis = component; Axis axis = component;
var axisLength = (axis.context.end - axis.context.start).magnitude; var axisLength = (axis.context.end - axis.context.start).magnitude;
if (axisLength == 0) return;
chart.InitAxisRuntimeData(axis); chart.InitAxisRuntimeData(axis);
var objName = ChartCached.GetComponentObjectName(axis); var objName = ChartCached.GetComponentObjectName(axis);
@@ -439,8 +440,6 @@ namespace XCharts
var pos = GetLabelPosition(totalWidth + gapWidth, i); var pos = GetLabelPosition(totalWidth + gapWidth, i);
label.SetPosition(pos); label.SetPosition(pos);
//CheckValueLabelActive(axis, i, label, pos);
axis.context.labelObjectList.Add(label); axis.context.labelObjectList.Add(label);
totalWidth += labelWidth; totalWidth += labelWidth;

View File

@@ -65,7 +65,7 @@ namespace XCharts.Runtime
if (axis.splitNumber <= 0) if (axis.splitNumber <= 0)
{ {
var eachWid = coordinateWid / dataCount; var eachWid = coordinateWid / dataCount;
var min = axis is YAxis ? 20 : 80; var min = ((axis is YAxis) || (axis is ZAxis3D)) ? 20 : 80;
if (eachWid > min) return dataCount; if (eachWid > min) return dataCount;
var tick = Mathf.CeilToInt(min / eachWid); var tick = Mathf.CeilToInt(min / eachWid);
return tick <= 1 ? dataCount : (int)(dataCount / tick); return tick <= 1 ? dataCount : (int)(dataCount / tick);

View File

@@ -11,16 +11,24 @@ namespace XCharts.Runtime
public virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue) public virtual void GetSeriesMinMaxValue(Axis axis, int axisIndex, out double tempMinValue, out double tempMaxValue)
{ {
var needAnimationData = !axis.context.needAnimation; var needAnimationData = !axis.context.needAnimation;
if (IsAllAxisValue()) if (axis is XAxis3D)
{ {
if (axis is XAxis || axis is XAxis3D) SeriesHelper.GetXMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);
}
else if (axis is ZAxis3D)
{
SeriesHelper.GetZMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);
}
else if (axis is YAxis3D)
{
SeriesHelper.GetYMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);
}
else if (IsAllAxisValue())
{
if (axis is XAxis)
{ {
SeriesHelper.GetXMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData); SeriesHelper.GetXMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);
} }
else if (axis is ZAxis3D)
{
SeriesHelper.GetZMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);
}
else else
{ {
SeriesHelper.GetYMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData); SeriesHelper.GetYMinMaxValue(this, axisIndex, axis.inverse, out tempMinValue, out tempMaxValue, false, false, needAnimationData);