MSChart Y轴不是从0小时开始[RangeBar]

时间:2014-10-20 10:31:53

标签: c# asp.net data-binding charts mschart

我使用范围mschart绘制一些数据。 Y轴表示时间(总共24小时)。图表正确绘制数据,但 y轴不是从0小时开始。

enter image description here

代码

 var IETable = (dt as System.ComponentModel.IListSource).GetList();
 chChart.DataBindCrossTable(IETable, "Number", "", "Start,Finish", "");

                  foreach (Series sr in chChart.Series)
                  {

                      sr.ChartType = SeriesChartType.RangeBar;
                      sr.YValueType = ChartValueType.Time;

                  }


                  chChart.ChartAreas[0].AxisY.LabelStyle.Format = "h : tt";
                  chChart.ChartAreas[0].AxisY.Interval = 2;
                  chChart.ChartAreas[0].AxisY.IntervalType = DateTimeIntervalType.Hours;
                  chChart.ChartAreas[0].AxisY.IntervalOffset = 0;
                  chChart.ChartAreas[0].AxisY.IsMarksNextToAxis = true;
                  chChart.ChartAreas[0].AxisY.IsStartedFromZero = true;


我也尝试过AxisY.Minimum = 0和AxisY.Maximum = 1。这将从0开始Y轴,但之后绘图不可见。

2 个答案:

答案 0 :(得分:1)

DateTime minDate = new DateTime(0, 0, 0, 0, 0, 0);
DateTime maxDate = minDate.AddHours(24);
chChart.ChartAreas[0].AxisY.Minimum = minDate.ToOADate();
chChart.ChartAreas[0].AxisY.Maximum = maxDate.ToOADate();

试试这个。您可能需要更改新的DateTime(0,0,0,0,0,0); 以适合您添加内容的年份和月份等。可能的解决方案是使用 DateTime.Now 获取 minDate 并减去小时,分钟和秒数

答案 1 :(得分:0)

将TextBox值转换为datetime就可以了。

DateTime minDate =Convert.ToDateTime(tbDate.Text);
DateTime maxDate = minDate.AddDays(1);
chChart.ChartAreas[0].AxisY.Minimum = minDate.ToOADate();
chChart.ChartAreas[0].AxisY.Maximum = maxDate.ToOADate();