我想从实时x-y坐标数据(使用OxyPlot)制作轮廓图。
我看过使用ContourSeries
给出的示例,我无法理解如何实现轮廓。
以下是示例代码:
namespace ExampleLibrary
{
using System;
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
[Examples("ContourSeries"), Tags("Series")]
public class ContourSeriesExamples
{
private static Func<double, double, double> peaks = (x, y) =>
3 * (1 - x) * (1 - x) * Math.Exp(-(x * x) - (y + 1) * (y + 1))
- 10 * (x / 5 - x * x * x - y * y * y * y * y) * Math.Exp(-x * x - y * y)
- 1.0 / 3 * Math.Exp(-(x + 1) * (x + 1) - y * y);
[Example("Peaks")]
public static PlotModel Peaks()
{
var model = new PlotModel { Title = "Peaks" };
var cs = new ContourSeries
{
ColumnCoordinates = ArrayBuilder.CreateVector(-3, 3, 0.05),
RowCoordinates = ArrayBuilder.CreateVector(-3.1, 3.1, 0.05)
};
cs.Data = ArrayBuilder.Evaluate(peaks, cs.ColumnCoordinates, cs.RowCoordinates);
model.Subtitle = cs.Data.GetLength(0) + "×" + cs.Data.GetLength(1);
model.Series.Add(cs);
return model;
}
}
我不理解的一些事情是'峰值'数学方程式(它的目的是什么,它是如何导出的?) 另一件我不理解的是轮廓本身是如何导出的。
答案 0 :(得分:0)
要了解&#34;峰值&#34;,您需要熟悉一般代表Func<T, TResult>
。在您的示例中,生成委托&#34;峰值&#34;有两个double
输入,一个输出结果也是double
。输入假定为x和y。
输出是lambda&#34; =&gt;&#34;。
关于第二个问题;如何导出轮廓本身? 您可以将轮廓想象为在普通XY笛卡尔上绘制的3D对象,在每个x,y处有一个z值在同一平原上。