C# ScottPlot .Axes.AutoScale() 功能


在 ScottPlot 库中,formsPlot1.Plot.Axes.AutoScale() 是一个关键方法,用于 自动调整图表的坐标轴范围,使其完美适配当前绘制的数据。它的核心功能是动态计算数据的最小/最大值,并调整 X 轴和 Y 轴的显示范围,确保所有数据点清晰可见且无裁剪。
________________________________________
功能详解
1. 核心作用
•    智能适配数据范围:
自动检测当前图表中所有数据(如折线图、散点图、条形图等)的 X 和 Y 的最小/最大值,并调整坐标轴范围,使数据完整显示。
•    一键优化显示:
无需手动计算范围,特别适用于动态数据或数据变化频繁的场景。
2. 默认行为
•    同时缩放 X 轴和 Y 轴:
除非额外配置,否则 AutoScale() 会同时调整两个坐标轴。
•    包含所有绘图对象:
影响图表中所有已添加的图形(如 Signal、Scatter、Bar 等)。
3. 常用重载方法
csharp
复制
// 基本用法:自动缩放 X 和 Y 轴
formsPlot1.Plot.Axes.AutoScale();

// 仅自动缩放 X 轴
formsPlot1.Plot.Axes.AutoScaleX();

// 仅自动缩放 Y 轴
formsPlot1.Plot.Axes.AutoScaleY();

// 指定额外的边距(padding,单位:数据坐标)
formsPlot1.Plot.Axes.AutoScale(paddingX: 0.1, paddingY: 0.2); // X/Y 轴范围增加 10%/20% 空白
________________________________________
典型使用场景
场景 1:加载新数据后自动适配
csharp
复制
// 添加新数据
double[] xs = { 1, 2, 3, 4, 5 };
double[] ys = { 10, 20, 15, 25, 30 };
formsPlot1.Plot.Add.Scatter(xs, ys);

// 自动调整坐标轴范围
formsPlot1.Plot.Axes.AutoScale();
formsPlot1.Refresh(); // 刷新显示
场景 2:动态数据更新
csharp
复制
// 动态追加数据后自动缩放
private void UpdateData(double[] newYs) {
    formsPlot1.Plot.Clear();
    formsPlot1.Plot.Add.Signal(newYs);
    formsPlot1.Plot.Axes.AutoScale(); // 确保新数据可见
    formsPlot1.Refresh();
}
场景 3:控制缩放时的边距
csharp
复制
// 自动缩放时增加 10% 的 X 轴边距和 20% 的 Y 轴边距
formsPlot1.Plot.Axes.AutoScale(paddingX: 0.1, paddingY: 0.2);
________________________________________
注意事项
1.    覆盖手动设置的轴范围
如果之前调用过 SetAxisLimits() 手动固定了坐标轴范围,AutoScale() 会覆盖这些设置。
2.    性能影响
对大数据量(如百万级数据点)频繁调用 AutoScale() 可能影响性能,建议在数据更新完成后调用。
3.    与 ZoomToFit() 的区别
o    AutoScale():基于数据范围调整坐标轴。
o    ZoomToFit():考虑数据 + 坐标轴标签、标题等布局元素的范围(ScottPlot 5.x 新增功能)。
4.    版本兼容性
适用于 ScottPlot 4.x 和 5.x,但在 5.x 中推荐使用 AutoScale() 的 padding 参数替代旧版的 Margins() 方法。
________________________________________
对比其他缩放方法
方法    作用    是否考虑数据    是否考虑标签布局
AutoScale()    仅按数据范围缩放    ✔️    ❌
ZoomToFit() (5.x)    数据 + 标签布局    ✔️    ✔️
SetAxisLimits()    手动固定范围    ❌    ❌
________________________________________
总结
•    何时使用:
o    数据变化后需要自动适配显示范围。
o    希望快速重置图表以显示全部数据。
•    推荐搭配:
o    在 Add 数据后调用,确保新数据可见。
o    结合 Refresh() 立即更新界面。
通过 AutoScale(),可以轻松实现“一键适配数据”的功能,避免手动计算坐标轴范围的繁琐操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值