如何在调用 PlotView.Invalidate 时让 OxyPlot 调整缩放?

How can I make OxyPlot adjust zoom when calling PlotView.Invalidate?

我对 OxyPlot 有如下问题:

我在程序启动时创建了一个新的 PlotView 并附加了一个带有一些轴的 PlotModel。

在我的程序中,用户可以打开一个文件,该文件在 PlotView 控件中进行解释和绘制。

为了显示新系列,我这样做

myPlotView.Invalidate(true);

这将在图中显示数据,但 OxyPlot 不执行任何缩放。如何自动平移和缩放,使绘图覆盖整个 PlotView?

我尝试设置

 myPlotView.Model.Axes[0].DataMinimum = someValue1
    myPlotView.Model.Axes[1].DataMinimum = someValue2
    myPlotView.Model.Axes[0].DataMaximum = someValue3
    myPlotView.Model.Axes[1].DataMaximum = someValue4

但什么也没发生。

重置轴并更新每个轴的 Minimum/Maximum。

例如

      PlotView.ActualModel.Axes[0].Reset();
      PlotView.ActualModel.Axes[1].Reset();

      PlotView.ActualModel.Axes[0].Minimum = 50;
      PlotView.ActualModel.Axes[0].Maximum = 250;

      PlotView.ActualModel.Axes[1].Minimum = 50;
      PlotView.ActualModel.Axes[1].Maximum = 250;
      PlotView.InvalidatePlot(true);

您当然应该使用数据中的 min/max 值。

Axes 计算 ViewMinimumViewMaxium (你正在看的真实的东西)只有在没有指定 Minimum 和 Maximum 的情况下,你可以在重置之前将它们设置为 Double.NaN ,所以ViewMinimum 和 ViewMaximum 将根据 DataMinimumDataMaximum

计算
foreach (var ax in _plotModel.Axes)
    ax.Maximum = ax.Minimum = Double.NaN;
PlotView.ResetAllAxes(); 

此外,如果您更改了数据点,则必须调用 Plot.InvalidatePlot(),这样 DataMinimumDataMaximum 也会更新。