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

时间:2015-06-25 12:47:11

标签: oxyplot

我的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

但没有任何反应。

2 个答案:

答案 0 :(得分:6)

只有在未指定“最小值”和“最大值”时,轴才会计算ViewMinimumViewMaxium(您正在观看的实际值),您可以在重置之前将它们设置为Double.NaN,因此ViewMinimum和ViewMaximum将根据DataMinimumDataMaximum

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

此外,如果您更改了数据点,则必须致电Plot.InvalidatePlot(),以便DataMinimumDataMaximum也得到更新。

答案 1 :(得分:0)

重置轴并更新每个轴的最小值/最大值。

e.g。

      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);

您当然应该使用数据中的最小值/最大值。