MSChart Winforms。如何删除空白点?

3
我使用MSChart控件创建蜡烛图表(命名空间System.Windows.Forms.DataVisualization.Charting)。我在星期五添加了两个点,在星期一添加了两个点。总共四个点。
结果中,我看到了四根蜡烛图和许多空白点。如何删除它?
谢谢。
var area = chart1.ChartAreas.Add("area1");                
area.AxisX.LabelStyle.Format = "yyyy.MM.dd HH:mm";

var series = new Series("prices", 4);

series.ChartArea = "area1";
series.ChartType = SeriesChartType.Candlestick;
series.XValueType = ChartValueType.DateTime;
series["OpenCloseStyle"] = "Triangle";
series["ShowOpenClose"] = "Both";
series["PointWidth"] = "0.6";
series["PriceUpColor"] = "Green";
series["PriceDownColor"] = "Red";

series.Points.AddXY(new DateTime(2016, 4, 25, 12, 0, 0), 2, 0.5, 0.7, 1.8);
series.Points.AddXY(new DateTime(2016, 4, 25, 11, 0, 0), 2, 0.5, 0.7, 1.8);
series.Points.AddXY(new DateTime(2016, 4, 22, 12, 0, 0), 2, 0.5, 0.7, 1.8);
series.Points.AddXY(new DateTime(2016, 4, 22, 11, 0, 0), 2, 0.5, 0.7, 1.8);                

this.chart1.Series.Add(series);

enter image description here


X轴是一个线性时间轴,所以您在周末期间想要看到什么?您只想看到工作日吗? - Falco Alexander
是的,我只想看到工作日。 - Artem
没有“空白点”。您所看到的只是该时间段的轴标签和图表网格线。 - jsanalytics
1个回答

3
这可以通过告诉Chart或者Series,你想要使用X-Values作为数字,但用于DataPoints放置来解决。
下面是需要添加的内容:
  series.IsXValueIndexed = true;

这意味着你仍然可以对它们进行格式化或在其他方面使用,比如计算,但是它们的放置位置严格地按照它们的值作为索引0,1,2...或者好像你将它们添加为字符串一样排列,导致x值实际上都为0,就像很多新手所做的那样。

现在你的图表看起来像这样(这里):

enter image description here

正如已经注意到的那样,你看到的间隙并不是由于空数据点引起的。要创建一个“空数据点”,你可以这样做:
series.Points[2].IsEmpty = true;

并告诉系列如何处理它们:

series.EmptyPointStyle.Color = Color.Transparent;
series.EmptyPointStyle.AxisLabel = " ";

注意:您添加的数据点并未按日期排序,因此它们现在呈无序状态。解决问题的最佳方法是在添加之前对其进行排序。
如果您无法这样做,可以按以下方式进行排序:
var sorted = series.Points.OrderBy(x => x.XValue).ToList();  // a sorted copy
series.Points.Clear();
foreach (DataPoint dp in sorted) series.Points.Add(dp);

enter image description here

有一个 Empty 点的有序列表


非常感谢。您的回答对我很有帮助。 - Artem

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