2016-05-02 46 views
2

我使用MSChart控件創建燭臺圖表(命名空間System.Windows.Forms.DataVisualization.Charting)。星期五我在星期五和星期二加了兩點。總共四點。MSChart Winforms。如何刪除空白點?

結果,我看到四根燭臺和許多空白點。如何刪除它?

感謝。

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

+0

X軸開的是一個線性的時間軸,所以你期望在週末看到什麼?你只想看看工作日? –

+0

是的,我只想看到只有工作日。 – Artem

+0

沒有「空白點」。你看到的只是那段時間內的軸標籤和圖表網格線。 – jsanalytics

回答

2

這可以通過告訴Chart,或者說Series來解決,要使用X-Values本身(即作爲數字),但DataPoints

這裏是你有什麼補充:

series.IsXValueIndexed = true; 

這意味着,你仍然可以格式他們或使用他們像計算其他方式,但放置嚴格一字排開就好像它們的值是索引0,1,2 ...或好像你已經將它們添加爲字符串一樣,導致x值實際上全部爲0,因爲這麼多新手都這樣做。

現在您的圖表看起來像這樣(在這裏):

enter image description here

正如已指出你看到的差距不是由空點引起的。要創建一個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); 

enter image description here

一個Empty

+0

非常感謝。你的回答幫助了我。 – Artem