我有一个 WPF 应用程序,我需要在其中可视化 y = y(x1, x2),其中 x1、x2 是线性坐标。我可以使用 Oxyplot 中的 HeatMapSeries 来做到这一点,但是当我想在同一窗口中绘制两组数据时,热图不是合适的工具。几个轮廓系列会更好。 现在,我尝试以与 HeatMapSeries 相同的方式实现这一点,效果非常好:
<span style="color:#212529"><span style="background-color:#c1e6c6"><span style="color:#212529"><code style="margin-left:2px"><span style="color:#000000">public</span> <span style="color:#000000">void</span> <span style="color:#000000">PlotHeatMap</span> (){OxyPlot.PlotModel model = <span style="color:#000000">new</span> PlotModel { Title = <span style="color:#000000">"2-D data"</span> };model.Axes.Add( <span style="color:#000000">new</span> OxyPlot.Axes.LinearColorAxis { Position = OxyPlot.Axes.AxisPosition.Right, Palette = OxyPalettes.Jet( <span style="color:#ae7313">500</span> ), HighColor = OxyColors.Gray, LowColor = OxyColors.Black } );OxyPlot.Series.HeatMapSeries heatmap = <span style="color:#000000">new</span> OxyPlot.Series.HeatMapSeries {Data = ( Double[ , ] )data,X0 = x1min,X1 = x1max,Y0 = x2min,Y1 = x2max};model.Series.Add( heatmap );
}
</code></span></span></span>
现在,当我尝试改用 ContourSeries 时,我只是将 HeatMapSeries 替换为 ContourSeries:
<span style="color:#212529"><span style="background-color:#c1e6c6"><span style="color:#212529"><code style="margin-left:2px"><span style="color:#000000">public</span> <span style="color:#000000">void</span> <span style="color:#000000">PlotContour</span> (){OxyPlot.PlotModel model = <span style="color:#000000">new</span> PlotModel { Title = <span style="color:#000000">"2-D data"</span> };model.Axes.Add( <span style="color:#000000">new</span> OxyPlot.Axes.LinearColorAxis { Position = OxyPlot.Axes.AxisPosition.Right, Palette = OxyPalettes.Jet( <span style="color:#ae7313">500</span> ), HighColor = OxyColors.Gray, LowColor = OxyColors.Black } );OxyPlot.Series.ContourSeries contour = <span style="color:#000000">new</span> OxyPlot.Series.ContourSeries {ColumnCoordinates = arrayFromMinToMax1,RowCoordinates = arrayFromMinToMax2,ContourLevels = arrayOfLevels,ContourColors = arrayOfColors, <span style="color:#6c6b5a">// Same # elements as the levels' array</span>Data = ( Double[ , ] )data};model.Series.Add( contour );
}
</code></span></span></span>
这只会产生输出:
x 轴和 y 轴在那里,并且与最小和最大坐标匹配,但我看不到等高线。我怀疑设置 Axis 时缺少某些东西(它应该与 HeatMapSeries 相同吗??)。我不知道如何处理这个等高线图。除了例如,还有其他例子吗? GitHub 上的 ContourSeriesExamples?
感谢您的帮助!
最佳答案
我终于找到问题所在了——是我的错! ColumnCoordinates
和 RowCoordinates
数组必须与 DoubleArray Data
的大小相匹配!我不确定他们是。现在轮廓和热图对齐了!感谢 Anders 的支持并插入我编写自己的代码!
关于c# - 如何使用 Oxyplot 创建和绘制 ContourSeries?
我们在Stack Overflow上找到一个类似的问题: c# - How do I create and plot a ContourSeries with Oxyplot? - Stack Overflow