微软图表 Winforms。如何去除空白点?

MSChart Winforms. How to remove blank points?

我使用 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);

这可以通过告诉 Chart,或者更确切地说 Series,你想使用 X-Values 本身(即数字)来解决,但是 not for placing the DataPoints.

这是您必须添加的内容:

  series.IsXValueIndexed = true;

这意味着您仍然可以格式化它们或使用它们以其他方式,例如计算,但放置 严格地 排列 就好像它们的值是索引 0,1,2... 或者就好像您将它们添加为字符串一样,导致 x-values实际上都是0,很多新手都是这样。

现在您的图表如下所示(此处):

如前所述您看到的差距不是由空点造成的。要创建一个 Empty DataPoint 你会做这样的事情:

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

订购了一个 Empty 积分