我试图使用OxyPlot来可视化一个时间序列,我使用年轮来标记时间和值级别的一些点,如最小/最大值等等。
我希望通过绑定在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>发布于 2019-10-21 23:04:22
在经历了将近一年的没有答案之后,我决定对我在那段时间里尝试和错误的经历作一个简短的总结。
我基本上放弃了在我的WPF应用程序中使用OxyPlot的方法,所以如果读者对使用OxyPlot的解决方案相当感兴趣,他可能找不到答案,在这里,对不起。
在谷歌搜索和前面提到的试错等之后,我最终转向了一个基于web的可视化解决方案(在我的例子中是Grafana)和一个时间序列数据库(在我的例子中是InfluxDB)。可视化和数据源等还有其他的可能性,但就我的情况而言,这是最合适的。我不会提供一个全面的清单,所以请谷歌为这一选择。
最有趣的是,我可以将Grafana图的一部分嵌入到WPF窗口的web组件中,但我最终没有使用该解决方案,因此很遗憾,我不能再给出一个全面的解决方案。重要的是,我可以通过网络在.Net中使用Grafana,所以没有进一步的限制。
同时,我更深入地研究了上面提到的系统,可以为我们的案例构建一些非常有用的仪表板,并很快地构建一些有趣的查询等等。即使您想要创建自己的可视化,我也建议您使用可视化平台、时间序列数据库(或任何其他数据库系统)和一些运行在某处的服务/守护进程/脚本来设置虚拟机。这对我有很大帮助。
如果有人喜欢添加一些东西,请随意。至少在我的情况下这个问题已经回答了,所以我会结束它。
发布于 2020-09-22 11:52:37
我也有一个类似的问题。为了给其他人提供一个答案,如何用OxyPlot来处理这个问题:
如果注释或系列的数目未知,则应使用
<oxy:PlotView Model="{Binding PlotModel}" />在Xaml和ViewModel上的这个属性中
public PlotModel PlotModel { get; set; }在这个属性上,您有更多的灵活性。您不能像PlotModel.Annotations一样设置LineSeries.ItemSource,但是您可以根据需要添加和删除所有时间的注释。
https://stackoverflow.com/questions/52971299
复制相似问题