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 食谱和多轴常见问题页面以获取更多示例。