微软图表 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
积分
我使用 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
积分