使用CustomLabel时数据点不可见

时间:2015-07-16 21:02:49

标签: c# winforms charts

我尝试使用.Net图表控件(System.Windows.Forms.DataVisualization.Charting)生成显示过去24小时内每小时数据点的图表。我希望X轴有两行,顶行显示格式" 8 PM" ("htt")和底行以" 07/16"的形式显示日期("MM\\/dd")。我的代码下面的问题是自定义标签没有显示,除非我取消注释已注释掉的两行。但是,当我这样做时,数据点就会消失。发生了什么事?如何显示数据点和自定义标签?

作为一个附带问题,我不明白为什么我必须在DayOfYear上的AxisX.Maximum添加2。似乎应该是我必须添加1.

chart1.Series.Clear();
var series = chart1.Series.Add("Trend");
series.XValueMember = "Date";
series.XValueType = ChartValueType.DateTime;
series.YValueMembers = "Count";
series.YValueType = ChartValueType.Int32;
series.ChartType = SeriesChartType.Line;
series.MarkerStyle = MarkerStyle.Circle;
series.MarkerSize = 16;
series.BorderWidth = 10;
chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Days;
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisX.IntervalOffset = 0;
//chart1.ChartAreas[0].AxisX.Minimum = DateTime.Now.DayOfYear;
//chart1.ChartAreas[0].AxisX.Maximum = DateTime.Now.DayOfYear + 2;
chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Hours;
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "htt";
chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -60;
chart1.ChartAreas[0].AxisX.CustomLabels.Add(1, DateTimeIntervalType.Days, "MM\\/dd", 1, LabelMarkStyle.LineSideMark);

这是两条线被注释掉后图表的样子。请注意,自定义标签未显示。

When lines are commented out

以下是取消注释这两行时图表的样子。请注意,缺少数据点,但显示当天的自定义标签。

When lines are uncommented

1 个答案:

答案 0 :(得分:1)

我的下面的图表与您的描述相似:

enter image description here

为此,最小值和最大值设置如下:

chart1.ChartAreas[0].AxisX.Minimum = DateTime.Now.ToOADate();
chart1.ChartAreas[0].AxisX.Maximum = DateTime.Now.AddHours(24).ToOADate();

因此,如果您更改“最小值”和“最大值”的设置方式,它应该一起显示自定义标签和数据点。

编辑1: 好的,现在我设法获得了像你这样的自定义标签,如前所述设置最小值和最大值:

enter image description here

对于" X轴算术"的实际用途,如设置最小值和最大值,您需要使用ToOADate()返回表示1899年12月30日之前/之后的天数的浮点数(https://msdn.microsoft.com/en-us/library/system.datetime.tooadate%28v=vs.110%29.aspx);因为DayOfYear返回一个整数,在这种情况下它是不合适的。