我目前有一个甘特图,显示工作请求的日期。我被要求修改甘特图,只显示工作日期。例如,WR#1从2016年2月8日开始,到2016年2月25日结束。但是,工作只在Mon-Thur进行。我目前的甘特图显示2016年2月8日至2016年2月25日的酒吧。我想打破吧台,只显示2 / 8-2 / 11,2 / 15-2 / 18和2 / 22-2 / 25。我还想在一行上显示这个单一的工作请求。是否可以使用SeriesChartType.RangeBar
,或者我必须使用不同的图表类型?我尝试使用具有相同DataPoint
的多个xValue
对象创建一个系列,但是当我将该系列添加到图表时,每个DataPoint
都显示在一个单独的行上。我做错了吗?
以下是我用于图表设置的一些代码:
using System.Windows.Forms.DataVisualization.Charting;
...
Series series1 = new Series();
series1.ChartArea = "Default";
series1.ChartType = SeriesChartType.RangeBar;
series1.YValuesPerPoint = 2;
series1.YValueType = ChartValueType.Date;
首次尝试:
// WR #1
DataPoint dp0 = new DataPoint(0, new double[] { startDate0, stopDate0 });
DataPoint dp1 = new DataPoint(0, new double[] { startDate1, stopDate1 });
DataPoint dp2 = new DataPoint(0, new double[] { startDate2, stopDate2 });
// WR #2
DataPoint dp3 = new DataPoint(1, new double[] { startDate3, stopDate3 });
DataPoint dp4 = new DataPoint(1, new double[] { startDate4, stopDate4 });
DataPoint dp5 = new DataPoint(1, new double[] { startDate5, stopDate5 });
series1.Points.Add(dp0);
series1.Points.Add(dp1);
series1.Points.Add(dp2);
series1.Points.Add(dp3);
series1.Points.Add(dp4);
series1.Points.Add(dp5);
chart1.Series.Clear();
chart1.Series.Add(series1);
我有几百个工作请求,所以我自然会使用循环为每个工作请求创建每个DataPoint
并将其添加到系列中。
答案 0 :(得分:1)
试试这个:
private void Form1_Load(object sender, EventArgs e)
{
chart1.Series[0].Points.AddXY(1, new object[] { new DateTime(2016, 2, 8), new DateTime(2016, 2, 25) });
chart1.Series[0].Points.AddXY(2, new object[] { new DateTime(2016, 2, 8), new DateTime(2016, 2, 11) });
chart1.Series[0].Points.AddXY(2, new object[] { new DateTime(2016, 2, 15), new DateTime(2016, 2, 18) });
chart1.Series[0].Points.AddXY(2, new object[] { new DateTime(2016, 2, 22), new DateTime(2016, 2, 25) });
}