1

データの傾向線をグラフ化しようとしています。カスタム関数を定義する方法はありますか? 私が見た中で最も近いのは、Hello Windows Forms の例です: http://www.oxyplot.org/doc/HelloWindowsForms.html

コード:

namespace WindowsFormsApplication1
{
    using System;
    using System.Windows.Forms;

    using OxyPlot;
    using OxyPlot.Series;

    public partial class Form1 : Form
    {
        public Form1()
        {
            this.InitializeComponent();
            var myModel = new PlotModel("Example 1");
            myModel.Series.Add(new FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)"));
            this.plot1.Model = myModel;
        }
    }
}

この例では、コサインを使用しています。カスタムの多変数式を定義する必要がある場合はどうすればよいですか?

編集:部分的な答えが見つかりました。

Lambda シリーズを使用します。

new FunctionSeries( x => a*x*x*x + b*x*x + c*x + d, .... )

ソース: https://oxyplot.codeplex.com/discussions/439064

ただし、多変数方程式の実行方法はまだわかりません。

4

1 に答える 1

6

ここに例の写真があります: 以下の関数の画像 そして、これはコードです:

    //your function based on x,y
    public double getValue(int x, int y)
    {
        return (10 * x * x + 11 * x*y*y  + 12*x*y );
    }

    //setting the values to the function
    public FunctionSeries GetFunction()
    { 
        int n = 100;
        FunctionSeries serie = new FunctionSeries();
        for (int x = 0; x < n; x++)
        {
            for (int y = 0; y < n; y++)
            {
                //adding the points based x,y
                DataPoint data = new DataPoint(x, getValue(x,y));

                //adding the point to the serie
                serie.Points.Add(data);
            }
        }
        //returning the serie
        return serie;
    }

    //setting all the parameters of the model
    public void graph()
    {
        model = new PlotModel { Title = "example" };
        model.LegendPosition = LegendPosition.RightBottom;
        model.LegendPlacement = LegendPlacement.Outside;
        model.LegendOrientation = LegendOrientation.Horizontal;

        model.Series.Add(GetFunction());
        var Yaxis = new OxyPlot.Axes.LinearAxis();
        OxyPlot.Axes.LinearAxis XAxis = new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Bottom, Minimum = 0, Maximum = 100 };
        XAxis.Title = "X";
        Yaxis.Title = "10 * x * x + 11 * x*y*y  + 12*x*y";
        model.Axes.Add(Yaxis);
        model.Axes.Add(XAxis);
        this.plot.Model = model;
    }

    //on click on the button 3 then show the graph
    private void button3_Click(object sender, EventArgs e)
    {
        graph();
    }
于 2015-03-10T09:28:04.503 に答える