You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使DevExpress WPF Chart 3D控件的X、Y轴长度相同,让XY平面为正方形?

问题:DevExpress WPF Chart 3D控件如何让XY平面呈现正方形(X/Y轴长度相同)

我近期正在学习DevExpress WPF Chart 3D控件,修改示例代码后生成了对应图表。以下是我的代码片段:

var points = new List<TestPoint>();
for (int i = 0; i < 90; i++)
{
    for (int j = 0; j < 360; j++)
    {
        points.Add(new TestPoint()
        {
          X = i,
          Y = j,
          Z = new Random(i * j % 10).NextDouble() * 10 + 100
        });
    }
}
...
DoubleCollection mapX = new DoubleCollection(xArray.Length);
DoubleCollection mapY = new DoubleCollection(yArray.Length);
DoubleCollection values = new DoubleCollection(xArray.Length * yArray.Length);

for (int i = 0; i < xArray.Length; i++)
{
    mapX.Add(xStart + i * xStep);
    for (int j = 0; j < yArray.Length; j++)
    {
        mapY.Add(yStart + j * yStep);
        double value = array[i, j];
        values.Add(value);
    }
}
MapY = mapX;
MapX = mapY;
MapValues = values;

请问如何设置才能使X轴和Y轴的长度相同,让XY平面呈现为正方形?


解决方案

要让XY平面呈现正方形,核心是保证X轴和Y轴的显示缩放比例一致,或者让轴的数值范围与容器宽高比匹配,以下是几种可行的实现方式:

方法1:启用全局等比例缩放

直接设置SurfaceDiagram3D的EqualScales属性为True,强制X、Y、Z三个轴使用相同的缩放比例,确保XY平面显示为正方形:

<dxc:Chart3D>
    <dxc:Chart3D.Diagram>
        <dxc:SurfaceDiagram3D EqualScales="True">
            <!-- 轴与系列配置 -->
        </dxc:SurfaceDiagram3D>
    </dxc:Chart3D.Diagram>
</dxc:Chart3D>

方法2:手动调整XY轴缩放比例

如果不需要Z轴参与等比例缩放,可以手动计算并设置X/Y轴的ScaleFactor,让两者显示长度一致:

// 获取图表的Diagram实例
var surfaceDiagram = (SurfaceDiagram3D)chart3D.Diagram;

// 获取X/Y轴的数值范围
double xTotalRange = surfaceDiagram.AxisX.Range.MaxValue - surfaceDiagram.AxisX.Range.MinValue;
double yTotalRange = surfaceDiagram.AxisY.Range.MaxValue - surfaceDiagram.AxisY.Range.MinValue;

// 调整X轴缩放比例,使其与Y轴显示长度匹配
surfaceDiagram.AxisX.ScaleFactor = yTotalRange / xTotalRange;
// 若以X轴为基准调整Y轴,使用:surfaceDiagram.AxisY.ScaleFactor = xTotalRange / yTotalRange;

方法3:匹配轴范围与容器宽高比

如果图表容器宽高比为1:1,直接让X/Y轴的数值范围(最大值-最小值)相同,再开启轴的KeepScaleRatio即可:

<dxc:SurfaceDiagram3D>
    <dxc:SurfaceDiagram3D.AxisX>
        <dxc:Axis3D Range="0,360" AutoScale="True" KeepScaleRatio="True"/>
    </dxc:SurfaceDiagram3D.AxisX>
    <dxc:SurfaceDiagram3D.AxisY>
        <dxc:Axis3D Range="0,360" AutoScale="True" KeepScaleRatio="True"/>
    </dxc:SurfaceDiagram3D.AxisY>
</dxc:SurfaceDiagram3D>

额外注意事项

  • 检查代码中MapY = mapX; MapX = mapY;的轴交换逻辑,确认最终X/Y轴的实际数值范围是否符合预期;
  • 若图表容器宽高比不是1:1,即使轴比例正确,XY平面也可能看起来不是正方形,此时需要将容器宽高设置为相同值。

内容的提问来源于stack exchange,提问作者Dream Land

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:18:24