坐标轴和坐标轴限制

内容

ScottPlot 5 提升了性能,新增了功能,并且更好地支持跨平台,但其 API 与 ScottPlot 4 并不完全相同。有关更多信息,请参阅 ScottPlot 5.0 中的新功能 页面。

此页面尚未更新以反映 ScottPlot 5.0(ScottPlot 的最新版本)。关于 ScottPlot 5 功能的信息可能出现在 ScottPlot 5.0 食谱 中,或在 ScottPlot 5.0 演示 应用中演示(附源代码)。

ScottPlot 在二维坐标系统的矩形视图中显示数据。该视图的边缘称为 坐标轴限制,本页讨论了调整和自定义坐标轴限制的各种方法。

  • 一个 坐标轴 在图表的一边显示信息
  • 轴标签是显示在轴上的标题
  • 刻度线是在数据区域外绘制的小线条
  • 刻度标签 可以为每个刻度线显示
  • 网格线是在数据区域每个刻度标记上绘制的线
  • 轴线 是绘制在轴边缘的单线。四个主要轴的轴线形成一个矩形,勾勒出数据区域。
  • 坐标轴有 主刻度次刻度。默认行为是两者都显示坐标轴线和刻度标记,但只有主刻度显示刻度标签和网格线。

  • 图表默认有 4 个轴(2 个主轴,2 个副轴)
  • 主坐标轴 在底部 (Plot.XAxis) 和左侧 (Plot.YAxis) 默认完全可见
  • 次要坐标轴 在顶部 (Plot.XAxis2) 和右侧 (Plot.YAxis2) 默认只显示坐标轴线
  • 一个图的 标题 只是顶部轴 (Plot.XAxis2) 的轴标签
  • 附加坐标轴 可以通过 Plot.AddAxis() 添加

可以通过调用 SetAxisLimits() 并传入您希望查看的矩形的边缘,手动定义绘图区域。

// 在X轴上显示从-10到+10的图,Y轴上显示从-20到+20的图
myPlot.SetAxisLimits(-10, 10, -20, 20);

AxisAuto() 命令将评估每个绘制的对象,以确定其包含的数据的限制,然后根据需要调整图表,以确保所有数据可见。可选参数允许用户调整在数据周围包含多少额外的填充。

// 调整绘图视图以适应数据
myPlot.AxisAuto();

参考当前坐标轴限制可能会很有帮助,以便可以保存、在应用程序的其他部分进行计算或应用于另一个图。GetAxisLimits() 函数返回一个对象,该对象包含描述调用该函数时图的坐标轴限制的属性。

// 读取当前限制
var limits = myPlot.GetAxisLimits();
// 属性保存轴视图信息
Console.WriteLine($"X 从 {limits.XMin} 到 {limits.XMax}");
// 将这些限制应用于另一个图表
myOtherPlot.SetAxisLimits(limits);

有时你希望用户能够放大和缩小,但不超过你控制的范围。轴限制的边界可以使用以下函数设置:

// 禁用缩放,水平范围限制在 0 到 +50,垂直范围限制在 -1 到 +1
formsPlot1.Plot.XAxis.SetBoundary(0, 50);
formsPlot1.Plot.YAxis.SetBoundary(-1, 1);
// 禁用水平缩放到小于 10 到 20 或垂直缩放到小于 0.1 到 0.2
formsPlot1.Plot.XAxis.SetInnerBoundary(10, 20);
formsPlot1.Plot.YAxis.SetInnerBoundary(0.1, 0.2);

此行为可以在用户控制级别进行控制。有关更多详细信息,请参见用户控制配置对象页面。

// 禁用左键拖动平移
formsPlot1.Configuration.Pan = false;
// 禁用右键拖动缩放
formsPlot1.Configuration.Zoom = false;
// 禁用滚轮缩放
formsPlot1.Configuration.ScrollWheelZoom = false;
// 禁用中键拖动缩放窗口
formsPlot1.Configuration.MiddleClickDragZoom = false;

使用 ScottPlot 可以拥有多个 X 或 Y 轴,但上述讨论的所有函数默认都在主 X 和 Y 轴上工作。上述所有建议适用于多轴图,但讨论的每个函数都有可选的“轴索引”参数,必须定义。例如:

plt.SetAxisLimits(yMin: -1, yMax: 1, yAxisIndex: 0); // 主 Y 轴
plt.SetAxisLimits(yMin: -5, yMax: 5, yAxisIndex: 1); // 次 Y 轴

查看ScottPlot 食谱多轴常见问题页面以获取更多示例。

总结
ScottPlot 5版本在性能、功能和跨平台支持方面有所提升,但其API与ScottPlot 4并不完全相同。该版本提供了更好的数据可视化功能,包括坐标系的轴限设置、轴标签、刻度线和网格线的自定义。用户可以通过`SetAxisLimits()`手动设置绘图区域,或使用`AxisAuto()`自动调整以确保所有数据可见。此外,用户可以设置轴限的边界,控制缩放范围,并通过配置选项禁用缩放和拖动功能。ScottPlot支持多轴绘图,用户可以为不同的X或Y轴设置独立的轴限。有关ScottPlot 5的更多信息和示例,请参考相关的Cookbook和演示页面。