none
Nplotで作成するグラフの書式を変えたい。 RRS feed

  • 質問

  • C#を使ってNplotでグラフを作成しているのですが、このグラフの書式をかえたいです。

    具体的には、横軸の目盛り線を上付きにして、横軸の数値表示を横軸の下に表示させたいのですが。。。
    (x軸の目盛り線と目盛り数値の位置を上下反転させたいと言ったほうが分かるでしょうか)

    どうしたら良いか分かる方いましたらぜひ教えてほしいです。
    宜しくお願いします。

    なおグラフ描画の関数内のプログラムを以下に載せておきます。
    public static void PlotLine (IPlotSurface2D plot, List<double> x, List<double> y, string title, string xlabel, string ylabel, bool clear = true, bool colored = false)
    {
    if (clear) {
    plot.Clear ();
    }
    plot.Title = title;
    Axis xaxis = new LinearAxis ();
    Axis yaxis = new LinearAxis ();
    xaxis.Label = xlabel;
    yaxis.Label = ylabel;
    plot.XAxis1 = xaxis;
    plot.YAxis1 = yaxis;

    LinePlot l = new LinePlot ();
    l.Pen.Color = colored ? Color.Red : Color.Black;
    l.AbscissaData = x;
    l.OrdinateData = y;
    plot.Add (l);
    }

    • 移動 星 睦美 2015年1月26日 4:04 Visual Studio 共通 から
    2015年1月26日 3:46

回答

  • xaxis.TicksAngle = +(float)(Math.PI / 2);//軸の下向きに目盛り
    xaxis.TickTextNextToAxis = false;//目盛りと同じ側に数値
    //もしくは
    xaxis.TicksAngle = -(float)(Math.PI / 2);//軸の上向きに目盛り
    xaxis.TickTextNextToAxis = true;//目盛りと逆側に数値

    #PropertyGridで軸をいじってみた


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2015年1月26日 9:53

すべての返信

  • フォーラム オペレーターの星 睦美です。かめやまんだー さん、投稿ありがとうございます。

    質問をVisual C# フォーラムに移動させていただきました。
    フォーラム ユーザーからの参考になる情報がありましたら、投稿者からの[回答としてマーク] をお願い致します。

    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2015年1月26日 4:08
  • xaxis.TicksAngle = +(float)(Math.PI / 2);//軸の下向きに目盛り
    xaxis.TickTextNextToAxis = false;//目盛りと同じ側に数値
    //もしくは
    xaxis.TicksAngle = -(float)(Math.PI / 2);//軸の上向きに目盛り
    xaxis.TickTextNextToAxis = true;//目盛りと逆側に数値

    #PropertyGridで軸をいじってみた


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2015年1月26日 9:53
  • 返信ありがとうございます。

    指示された設定の通りに記述したところ、書式の問題は解決しました。

    しかし、もう一つ問題がありました。

    グラフのY軸の数値範囲を0~にしたいのですが、その方法がわかりません。

    どうしてもY軸の最小値が-1となり、下部に余計な空白が出来てしまいます。

    Y軸の最小値を0にするにはどうしたらよいでしょうか?

    宜しくお願いします。

    以下にグラフ描画のプログラムを載せます。

            public static void PlotLine(IPlotSurface2D plot, List<double> x, List<double> y, string title, string xlabel, string ylabel, bool clear = true, bool colored = false)

            {

                if (clear)

                {

                    plot.Clear();

                }

                plot.Title = title;

                Axis xaxis = new LinearAxis();

                Axis yaxis = new LinearAxis();

                xaxis.Label = xlabel;

                yaxis.Label = ylabel;

                xaxis.TicksAngle = -(float)(Math.PI / 2);

                xaxis.TickTextNextToAxis = true;

                yaxis.WorldMin = 0;

                plot.XAxis1 = xaxis;

                plot.YAxis1 = yaxis;

                LinePlot l = new LinePlot();

                l.Pen.Color = colored ? Color.Red : Color.Black;

                l.AbscissaData = x;

                l.OrdinateData = y;

                plot.Add(l);

            }

    2015年1月28日 15:25
  • public static void PlotLine(IPlotSurface2D plot, List<double> x, List<double> y, string title, string xlabel, string ylabel, bool clear = true, bool colored = false)
    {
        if (clear)
        {
            plot.Clear();
        }
    
        plot.Title = title;
    
        Axis xaxis = new LinearAxis();
        Axis yaxis = new LinearAxis();
        xaxis.Label = xlabel;
        yaxis.Label = ylabel;
        xaxis.TicksAngle = -(float)(Math.PI / 2);
        xaxis.TickTextNextToAxis = true;
        //yaxis.WorldMin = 0;//ここではなく
    
        plot.XAxis1 = xaxis;
        plot.YAxis1 = yaxis;
    
        LinePlot l = new LinePlot();
        l.Pen.Color = colored ? Color.Red : Color.Black;
        l.AbscissaData = x;
        l.OrdinateData = y;
    
        plot.Add(l);
    
        //LinePlotをIPlotSurface2に追加して軸の範囲が自動でが生成された後で設定すると上手くいくらしい
        yaxis.WorldMin = 0;
    }

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2015年1月28日 16:22