OxyPlot 图表中的可绑定注释
Bindable annotations in OxyPlot chart
我正在尝试使用 OxyPlot 来可视化时间序列,并且我正在使用注释来标记一些时间点和值水平,例如 minimum/maximum 值等。
我想在 WPF 中通过绑定实现这一点,到目前为止,我从 Plot
控件、两个轴和一个数据系列开始。这工作正常,但我找不到将注释绑定到具有动态创建的各种注释的 ObservableCollection<Annontation>
的方法。
<UserControl
...
xmlns:oxy="http://oxyplot.org/wpf"
...
>
<Grid>
...
<oxy:Plot>
<oxy:Plot.Axes>
<oxy:DateTimeAxis ... />
<oxy:LinearAxis ... />
</oxy:Plot.Axes>
<oxy:Plot.Series>
<oxy:StairStepSeries ... />
</oxy:Plot.Series>
<oxy:Plot.Annotations>
<!--
How do I bind to the ObservableCollection 'Annotations' in my ViewModel?
Note, 'Annotations' property isn't available directly in Plot, either.
-->
</oxy:Plot.Annotations>
</oxy:Plot>
</Grid>
</UserControl>
在将近一年没有得到答案后,我决定用我在那段时间反复试验的经验做一个简短的总结来回答。
我基本上放弃了在我的 WPF 应用程序中使用 OxyPlot 的方法,所以如果 reader 对使用 OxyPlot 的解决方案很感兴趣,(s)他可能找不到答案,在这里,抱歉.
在谷歌搜索和已经提到的反复试验等之后,我最终转向了一个基于网络的可视化解决方案(在我的例子中是 Grafana)和一个时间序列数据库(在我的例子中是 InfluxDB)。可视化和数据源等还有其他可能性,但对我来说这是最合适的。我不会提供完整的列表,因此请 google 寻找替代方案。
我的 .Net 案例最有趣的是我可以将我的 Grafana 图的一部分嵌入到我的 WPF window 上的 Web 组件中,但我最终没有使用这个解决方案,所以很遗憾,我无法再提供全面的解决方案。重要的是,我可以通过 web-stuff 在 .Net 中使用 Grafana,所以没有进一步的限制。
与此同时,我更深入地研究了上述系统,可以为我们的案例构建一些非常有用的仪表板,并非常快速地构建一些有趣的查询等。即使您想创建自己的可视化,我也建议您设置带有可视化平台的虚拟机,时间序列数据库(或任何其他数据库系统)和一些 services/daemons/scripts 运行 某处。这对我帮助很大。
如果有人喜欢,欢迎补充。至少就我而言,这个问题得到了回答,所以我将关闭它。
我运行在类似的问题。只是为其他人提供答案,如何使用 OxyPlot 处理此问题:
如果您有未知数量的注释或系列,您应该使用
<oxy:PlotView Model="{Binding PlotModel}" />
在 Xaml 和这个 属性 在你的 ViewModel
public PlotModel PlotModel { get; set; }
在这个 属性 上你有更大的灵活性。您不能像 LineSeries.ItemSource
那样设置 PlotModel.Annotations
,但是您可以随时根据需要添加和删除这么多注释。
我正在尝试使用 OxyPlot 来可视化时间序列,并且我正在使用注释来标记一些时间点和值水平,例如 minimum/maximum 值等。
我想在 WPF 中通过绑定实现这一点,到目前为止,我从 Plot
控件、两个轴和一个数据系列开始。这工作正常,但我找不到将注释绑定到具有动态创建的各种注释的 ObservableCollection<Annontation>
的方法。
<UserControl
...
xmlns:oxy="http://oxyplot.org/wpf"
...
>
<Grid>
...
<oxy:Plot>
<oxy:Plot.Axes>
<oxy:DateTimeAxis ... />
<oxy:LinearAxis ... />
</oxy:Plot.Axes>
<oxy:Plot.Series>
<oxy:StairStepSeries ... />
</oxy:Plot.Series>
<oxy:Plot.Annotations>
<!--
How do I bind to the ObservableCollection 'Annotations' in my ViewModel?
Note, 'Annotations' property isn't available directly in Plot, either.
-->
</oxy:Plot.Annotations>
</oxy:Plot>
</Grid>
</UserControl>
在将近一年没有得到答案后,我决定用我在那段时间反复试验的经验做一个简短的总结来回答。
我基本上放弃了在我的 WPF 应用程序中使用 OxyPlot 的方法,所以如果 reader 对使用 OxyPlot 的解决方案很感兴趣,(s)他可能找不到答案,在这里,抱歉.
在谷歌搜索和已经提到的反复试验等之后,我最终转向了一个基于网络的可视化解决方案(在我的例子中是 Grafana)和一个时间序列数据库(在我的例子中是 InfluxDB)。可视化和数据源等还有其他可能性,但对我来说这是最合适的。我不会提供完整的列表,因此请 google 寻找替代方案。
我的 .Net 案例最有趣的是我可以将我的 Grafana 图的一部分嵌入到我的 WPF window 上的 Web 组件中,但我最终没有使用这个解决方案,所以很遗憾,我无法再提供全面的解决方案。重要的是,我可以通过 web-stuff 在 .Net 中使用 Grafana,所以没有进一步的限制。
与此同时,我更深入地研究了上述系统,可以为我们的案例构建一些非常有用的仪表板,并非常快速地构建一些有趣的查询等。即使您想创建自己的可视化,我也建议您设置带有可视化平台的虚拟机,时间序列数据库(或任何其他数据库系统)和一些 services/daemons/scripts 运行 某处。这对我帮助很大。
如果有人喜欢,欢迎补充。至少就我而言,这个问题得到了回答,所以我将关闭它。
我运行在类似的问题。只是为其他人提供答案,如何使用 OxyPlot 处理此问题:
如果您有未知数量的注释或系列,您应该使用
<oxy:PlotView Model="{Binding PlotModel}" />
在 Xaml 和这个 属性 在你的 ViewModel
public PlotModel PlotModel { get; set; }
在这个 属性 上你有更大的灵活性。您不能像 LineSeries.ItemSource
那样设置 PlotModel.Annotations
,但是您可以随时根据需要添加和删除这么多注释。