OxyPlot轮廓系列

时间:2015-06-19 15:51:13

标签: c# winforms oxyplot

我想从实时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;
    }
}

我不理解的一些事情是'峰值'数学方程式(它的目的是什么,它是如何导出的?) 另一件我不理解的是轮廓本身是如何导出的。

1 个答案:

答案 0 :(得分:0)

要了解&#34;峰值&#34;,您需要熟悉一般代表Func<T, TResult>。在您的示例中,生成委托&#34;峰值&#34;有两个double输入,一个输出结果也是double。输入假定为x和y。 输出是lambda&#34; =&gt;&#34;。

之后的函数

关于第二个问题;如何导出轮廓本身? 您可以将轮廓想象为在普通XY笛卡尔上绘制的3D对象,在每个x,y处有一个z值在同一平原上。