c# - 如何将多个甘特图条放在同一行?

标签 c# winforms charts series gantt-chart

我目前有一个显示工作请求日期的甘特图。我被要求修改甘特图以仅显示将执行工作的日期。例如,WR #1 从 2/8/2016 开始到 2/25/2016 结束。但是,工作仅在周一至周四进行。我当前的甘特图显示了从 2/8/2016 到 2/25/2016 的条形图。我想分解条形,使其仅显示 2/8-2/11、2/15-2/18 和 2/22-2/25。我还想在一行中显示这个单一的工作请求。是否可以为此使用 SeriesChartType.RangeBar,还是我必须使用不同的图表类型?我尝试使用具有相同 xValue 的多个 DataPoint 对象创建一个系列,但是当我将系列添加到图表时,每个 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 并将其添加到系列中。

最佳答案

试试这个:

    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) });
    }

enter image description here

关于c# - 如何将多个甘特图条放在同一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228285/

相关文章:

c# - silverlight 3.0与winforms的通信

c# - 将公式单元格应用于 DataGridview

c# - 根据 StripMenu 输入显示和隐藏某些选项卡(C# Windows 窗体)

javascript - Flotchart 堆积条形总标签

javascript - 需要帮助来确定自定义工具提示的配置(chartjs)

c# - 通过应用检查 Linq IQueryable 是否有订单

c# - 调用 Assembly.Load(byte[]) 可以引发 AppDomain.AssemblyResolve 事件吗?

javascript - 当我单击 <select> 下拉菜单上的选项时,如何绘制 Google 图表?

c# - 在C#中通过字符串获取字典名称

c# - 在c#中使用openxml和pdfcreator将docx转换为pdf