Zedgraph – 如何自定义基于日期的X-Axis抽搐

情况 在此处输入图像描述

我正在使用价格(Y轴)的ZedGraph与时间(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月(出现在3月11日)
  • 2012年3月(出现在Mar12)
  • 2013年3月(出现在3月13日)

我希望这更清楚。

您需要将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循环中这样做,我只是把它放在一个,因为这是我从其他post复制代码的方式。 我希望它有效!