7

状況 ここに画像の説明を入力

時間 (X 軸) に対する価格 (Y 軸) の ZedGraph を使用してチャートを作成しています。期間は3年です。

現時点では、次の X 軸ラベルを取得しています。1月12日; 2010 年 3 月 3 日から 2013 年 3 月 2 日までの一連のデータについては、1 月 13 日。

私が見る限り、軸が DateTime 型の場合、これはデフォルトの動作です。

質問

次のように X 軸のラベルを変更するにはどうすればよいですか。3月12日; 3月13日? より一般的には、データの開始/終了月と一致するように使用されるラベルを変更できるようにします。


編集:

この質問に対する私の最初の試みは少しあいまいだったので、明確にしようと思います。

ラベルを dd-MMM-yy にしたいわけではありません。ラベル/目盛りが表示される X 軸上の位置を制御できるようにしたいのです。

そのため、2010 年 3 月 3 日から 2013 年 3 月 2 日までの X 軸の場合、常に 1 月に表示されるラベルではなく、

  • 1 月 11 日 [つまり 2011 年 1 月]。
  • 1 月 12 日 [つまり 2012 年 1 月]。
  • 1 月 13 日 [つまり 2013 年 1 月]

私のスクリーン ダンプに示すように、ラベル/目盛りが表示される月を選択できます。したがって、そのデータセットでは、ラベルを次の場所に置きたいと思います:

  • 2010 年 3 月 (Mar10 として表示)
  • 2011 年 3 月 (Mar11 として表示)
  • 2012 年 3 月 (Mar12 として表示)
  • 2013 年 3 月 (Mar13 として表示)

それがより明確であることを願っています。

4

1 に答える 1

8

x 軸のプロパティを次のように設定する必要があります。

myPane.XAxis.Title.Text = "Date";
myPane.XAxis.Type = AxisType.Date;
myPane.XAxis.Scale.Format = "dd-MMM-yy";
myPane.XAxis.Scale.MajorUnit = DateUnit.Day;
myPane.XAxis.Scale.MajorStep = 1;
myPane.XAxis.Scale.Min = new XDate(DateTime.Now.AddDays(8));
myPane.XAxis.Scale.Max = new XDate(DateTime.Now.AddDays(11));

これにより、リクエストした日付が表示されます。AddDays代わりに今日からカウントダウンしたい場合は、メソッドにマイナス記号を入れることができ、日付を具体的に設定することもできます (入力を開始するときにオートコンプリートを見てください)。

お役に立てれば!幸運を!

編集

これらのカスタム ティックを取得する方法を次に示しTextObjます。ラベルを使用する必要があります。また、元のダニを取り除く必要があります。

pane1.MasterPane[0].XAxis.Scale.IsVisible = false;
pane1.MasterPane[0].XAxis.MajorTic.IsAllTics = false;

foreach (double val in x_values)
{
    TextObj text = new TextObj(val.ToString(), pane1.MasterPane[0].YAxis.Scale.Min, val);
    text.Location.AlignH = AlignH.Right;
    text.FontSpec.Border.IsVisible = false;
    text.FontSpec.Fill.IsVisible = false;
    pane1.MasterPane[0].GraphObjList.Add("Mar10"); 

    LineObj line = new LineObj(pane1.MasterPane[0].YAxis.Scale.Min, val, pane1.MasterPane[0].YAxis.Scale.Max, val);
    line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
    line.Line.Width = 1f;
    pane1.MasterPane[0].GraphObjList.Add(line);
}

私はこのスレッドからこれを修正しましたが、それはY-axis. これはちょっとしたハックで、それぞれを手動で追加する必要があります。ループで実行する必要はありませんforeach。他の投稿からコードをコピーした方法であるため、ループに入れただけです。うまくいくことを願っています!

于 2013-03-05T05:57:49.427 に答える