簡體   English   中英

Mschart軸上的年份標簽放錯了位置

[英]Misplaced year label on mschart axis

我有一個圖表,其中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: 從此答案中提取了示例代碼,並進行了一些修改。在.NET 4.5.1和3.5中進行了測試

要顯示的第一個標簽是大於或等於最小值的一個標簽,最小值是間隔的倍數。 因此,間隔為3:[2011,2012]-> 2013; [2014,2015] - > 2016。 這樣,可以使用一些簡單的數學方法動態計算偏移量。

var offset = -(interval - (minYear % interval));

盡管問題已解決,但對我來說仍然沒有意義。 為什么要在日期軸上而不是數字軸上呢? 聽起來更像是個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM