我有一个图表,其中x轴由日期组成,每年间隔一次。问题是,根据最短日期,是否显示最小标签。检查以下内容:
var s = new Series();
s.ChartType = SeriesChartType.Line;
var d = new DateTime(2013, 04, 01);
s.Points.AddXY(d.AddYears(-1), 3);
s.Points.AddXY(d, 3);
s.Points.AddXY(d.AddYears(1), 2);
s.Points.AddXY(d.AddYears(2), 1);
s.Points.AddXY(d.AddYears(3), 4);
chart1.Series.Clear();
chart1.Series.Add(s);
chart1.Series[0].XValueType = ChartValueType.DateTime;
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd";
chart1.ChartAreas[0].AxisX.Interval = 2;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Years;
chart1.Series[0].XValueType = ChartValueType.DateTime;
DateTime minDate = new DateTime(2011, 01, 01);
DateTime maxDate = new DateTime(2022, 01, 01);
chart1.ChartAreas[0].AxisX.Minimum = minDate.ToOADate();
运行上述代码时,最短日期没有标签(第一个标签是2012),但是,如果您使用2012作为最低年份,则会显示。这仅发生在高于1的间隔,并且值越大越严重。我不知道为什么会这样。我也试过为LabelStyle设置间隔属性(减去偏移量),但无济于事。
PS:从this answer中提取的示例代码,并进行了一些修改 在.NET 4.5.1和3.5上进行了测试
答案 0 :(得分:1)
要显示的第一个标签是高于或等于最小值的标签,它是间隔的倍数。因此,间隔为3:[2011,2012] - > 2013; [2014,2015] - GT; 2016。这样,可以通过一些简单的数学动态计算偏移量。
var offset = -(interval - (minYear % interval));
虽然问题已经解决,但对我来说仍然没有意义。为什么这是在日期轴而不是数字轴?听起来更像是一个错误。