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,但是您可以随时根据需要添加和删除这么多注释。