图表控件数据系列

3
我有一个图表控件。我在y轴上绘制价格,在x轴上绘制月份和年份。
我先添加了系列1,然后将系列2添加到相同的图表区域。接下来使用以下代码绘制系列1和2的点。
curveChart.Series.Add("Series1");
curveChart.Series["Series1"].XValueType = ChartValueType.DateTime;
curveChart.Series["Series1"].Points.DataBind(list1, "MonthYear", "PriceValue", null);
curveChart.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
curveChart.Series["Series1"].BorderWidth = 3;
curveChart.ChartAreas["0"].AxisX.Interval = 1;

curveChart.Series.Add("Series2");
curveChart.Series["Series2"].XValueType = ChartValueType.DateTime;
curveChart.Series["Series2"].Points.DataBind(list2, "MonthYear", "PriceValue", null);
curveChart.Series["Series2"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
curveChart.Series["Series2"].BorderWidth = 3;
curveChart.ChartAreas["0"].AxisX.Interval = 1;

我面临的问题是,list2仅包含截至2015年12月的数据,而list1包含截至2016年12月的数据,但绘制图表时,图表中的两条线都延伸到了2016年12月,尽管list2没有2016年12月的数据。如何解决这个问题?


现在发生了什么,当数据点丢失时你想要发生什么? - Steve Wellens
list2中不包含2016年1月至2016年12月的数据,但list1包含截至2016年12月的数据。目前,两个图表都绘制到了2016年12月,尽管list2并没有包含那些数据。我希望能够仅绘制list2中可用数据点的图表。 - CoolDiva
我尝试使用 curveChart.DataManipulator.IsEmptyPointIgnored = true;,但仍然无法正常工作。 - CoolDiva
1个回答

4
我试图模拟您的问题。我添加了两个数据系列,一个有3个点,另一个有2个点。图表被正确呈现。这让我认为在绑定数据之前,您需要处理一下数据。
curveChart.Series.Clear();
curveChart.Series.Add("Series1");
curveChart.Series["Series1"].XValueType = ChartValueType.DateTime;
curveChart.Series["Series1"].Points.AddXY(DateTime.Now, 12.00m);
curveChart.Series["Series1"].Points.AddXY(DateTime.Now.AddDays(1), 13m);
curveChart.Series["Series1"].Points.AddXY(DateTime.Now.AddDays(2), 8m);
curveChart.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
curveChart.Series["Series1"].BorderWidth = 3;
curveChart.ChartAreas["0"].AxisX.Interval = 1;

curveChart.Series.Add("Series2");
curveChart.Series["Series2"].XValueType = ChartValueType.DateTime;
curveChart.Series["Series2"].Points.AddXY(DateTime.Now, 5.00m);
curveChart.Series["Series2"].Points.AddXY(DateTime.Now.AddDays(1), 7m);          
curveChart.Series["Series2"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
curveChart.Series["Series2"].BorderWidth = 3;
curveChart.ChartAreas["0"].AxisX.Interval = 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接