如何在超过设定的最大点数后自动 scroll/pan Oxyplot?
How to auto scroll/pan Oxyplot after it has more than a set maximum points?
我使用以下 LinearAxis 作为我的 X 轴,我想将最小值设置为 0,最大值设置为 300。但在某些情况下,X 轴可以超过 300。在那种情况下, 我希望 x 轴自动滚动。
<oxy:LinearAxis Position="Bottom" MajorGridlineStyle="Dot" Title="seconds"
MinWidth="100" Minimum="0" Maximum="300"
IsPanEnabled="True" ></oxy:LinearAxis>
我知道如果我不设置最小值或最大值,轴实际上是自动缩放的,但它从一开始就自动缩放,而不考虑设置的最大值,这不是我想要的。
我应该在 LinearAxis 上尝试任何设置吗?
您可以将Series
的ItemsSource
属性绑定到ObservableCollection<DataPoint>
并处理CollectionChanged
事件。像这样:
((ObservableCollection<DataPoint>)Points1).CollectionChanged += PlotPointsChanged;
((ObservableCollection<DataPoint>)Points2).CollectionChanged += PlotPointsChanged;
//...
其中
void PlotPointsChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
double max = 300;
foreach (OxyPlot.Wpf.Series ser in oxyp.Series)
foreach (DataPoint dp in ser.ItemsSource)
if (dp.X > max)
max = dp.X;
botAxis.Maximum = max;
}
请注意 oxyp 是 Plot
的名称,botAxis 是您正在使用的轴。
希望对您有所帮助。
我使用以下 LinearAxis 作为我的 X 轴,我想将最小值设置为 0,最大值设置为 300。但在某些情况下,X 轴可以超过 300。在那种情况下, 我希望 x 轴自动滚动。
<oxy:LinearAxis Position="Bottom" MajorGridlineStyle="Dot" Title="seconds"
MinWidth="100" Minimum="0" Maximum="300"
IsPanEnabled="True" ></oxy:LinearAxis>
我知道如果我不设置最小值或最大值,轴实际上是自动缩放的,但它从一开始就自动缩放,而不考虑设置的最大值,这不是我想要的。
我应该在 LinearAxis 上尝试任何设置吗?
您可以将Series
的ItemsSource
属性绑定到ObservableCollection<DataPoint>
并处理CollectionChanged
事件。像这样:
((ObservableCollection<DataPoint>)Points1).CollectionChanged += PlotPointsChanged;
((ObservableCollection<DataPoint>)Points2).CollectionChanged += PlotPointsChanged;
//...
其中
void PlotPointsChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
double max = 300;
foreach (OxyPlot.Wpf.Series ser in oxyp.Series)
foreach (DataPoint dp in ser.ItemsSource)
if (dp.X > max)
max = dp.X;
botAxis.Maximum = max;
}
请注意 oxyp 是 Plot
的名称,botAxis 是您正在使用的轴。
希望对您有所帮助。