2016-07-29 66 views
0

我正在使用.Net 4中的MS圖表控件顯示4個數據系列,X軸設置爲日期時間類型。MS圖表控件上的日期時間類型X軸不顯示週末

將間隔設置爲包含週末的天數,即使數據中未包含週末日期。

除了一個系列以外,所有系列的日期點都是相同的,例外情況是投影線從最後一個日期開始並持續了若干個工作日(不包括週末)。

如何從所有系列的圖表中刪除顯示週末(或無價值的日期)?

這是一個winforms.net 4.0應用程序。

foreach (var series in chart2.Series) 
    { 
     series.ChartType = SeriesChartType.Line; 
     series.BorderWidth = 5; 
     series.XValueType = ChartValueType.Date; 
     // I Tried this to remove weekends but it results in the graph showing a big red X 
     series.IsXValueIndexed = true; 
    } 

與編輯守則下重現我的問題:

 DateTime dt = DateTime.Now; 
     chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days; 

     Series test1 = new Series("Test1"); 
     test1.XValueType = ChartValueType.Date; 
     for (int i = 1; i < 7; i++) 
     { 
      //skip the weekend 
      if (dt.DayOfWeek.ToString() == "Saturday") dt = dt.AddDays(1); 
      if (dt.DayOfWeek.ToString() == "Sunday") dt = dt.AddDays(1); 

      test1.Points.AddXY(dt.Date, i); 
      dt = dt.AddDays(1); 
      i++; 
     } 

     chart1.Series.Add(test1); 

     Series test2 = new Series("Test2"); 
     test1.XValueType = ChartValueType.Date; 
     for (int i = 1; i < 7; i++) 
     { 
      //skip the weekend 
      if (dt.DayOfWeek.ToString() == "Saturday") dt = dt.AddDays(1); 
      if (dt.DayOfWeek.ToString() == "Sunday") dt = dt.AddDays(1); 

      test2.Points.AddXY(dt.Date, i); 
      dt = dt.AddDays(1); 
      i++; 
     } 

     chart1.Series.Add(test2); 

     foreach (var series in chart1.Series) 
     { 
      series.ChartType = SeriesChartType.Line; 
      series.BorderWidth = 5; 
      series.IsXValueIndexed=true; 
     } 
     chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 45; 
     chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1; 

回答

2

您爲DateTime,這是你應該做的加入x值。但默認情況下,這意味着所有的x值都是按比例定位的,正如人們通常所希望的那樣。

不過你的情況是一個例外,那就是即使是Series.IsXValueIndexed屬性的文件中提到:

在一個系列中的所有數據點使用循序索引,如果這 屬性爲true,則數據點將不管它們的相關X值如何,都被順序繪製, 。這意味着將有 沒有「丟失」的數據點。

例如,假設存在具有1,2和4 X值如果此屬性是錯誤的,將有一個 數據在一系列三(3)個數據點在X軸點缺失位置標有「3」。但是,如果您將 設置爲true,則三個數據點將按順序繪製在 點1,2和4處,並且將不會有缺失數據 點。標記爲「3」的X軸位置不會出現在圖表上。

當你不希望有,你知道你會不會有數據 間隔,如週末缺少數據點,這是非常有用。然而

注:

如果要顯示多個系列和至少一個系列採用 索引的X值,那麼所有系列必須對準 - 也就是說,有 相同數量的數據點 - 相應的點必須具有相同的X值。

所以你在使用這個屬性是正確的,但是,最有可能的,你的系列沒有完全對齊

爲了確保它們通常可以使用Chart.DataManipulator.InsertEmptyPoints過載之一。不幸的是,他們都使用固定的Interval,而不是模板Series

因此,無論您的數據在Series中缺少某個值,您都需要確保添加一個Empty DataPoint。如果數據是數據綁定的,您將不得不在DataSource中這樣做!

+0

嗨Taw,感謝您的回覆,我已經添加了上面的代碼來顯示我的問題!如果我註釋掉所有test2的東西,test1可以同時使用,我可以從上面得到紅色的X. 我需要爲這兩個系列的測試1和測試2的所有日期添加一個空數據點嗎? – Adrian

+0

是的,也就是說,如果你實際上__wanted__在不重置兩個系列之間繼續計數'dt' ..! – TaW

+0

是的,這只是一個真實的例子,我繪製了一個序列,然後添加了一個可以延長線條的投影。 我怎麼說增加所有的空數據點,因爲它們超出了test2的開始,並在test1結束之後? 你能告訴我我該怎麼做嗎? – Adrian

相關問題