7

情况 在此处输入图像描述

我正在使用 ZedGraph 的价格(Y 轴)对时间(X 轴)构建图表。期限为三年。

目前我得到的 X 轴标签是:1 月 11 日;1月12日;1 月 13 日,用于 2010 年 3 月 3 日至 2013 年 3 月 2 日的一组数据。

据我所知,如果轴是 DateTime 类型,这是默认行为。

问题

如何更改 X 轴标签,以便获得:3 月 11 日;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 月]

如我的屏幕转储中所示,我可以选择标签/tic 出现在哪个月份。因此,对于该数据集,我希望在以下位置添加标签:

  • 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 回答