2016-08-03 60 views
0

我創建了一個C#WinForms應用程序,它使用WinForms折線圖控件從SQL服務器中顯示近實時,基於時間的(〜5s刷新率)數據。數據在圖表上的獲取和插入工作得很好,這只是我遇到的格式問題。 X軸包含每個點的日期時間,並設置爲在X軸上顯示日期。asp.net圖表強制標記在X軸上交錯均勻

我遇到的問題是X軸標籤沒有在圖表中均勻顯示。我能夠獲得我想要的軸標籤數量,但它們並不一致地位於軸上的相同位置。

理想情況下,我希望能夠設置x軸標籤的數量,在圖表的每一端都有一個標籤,然後剩下的標籤均勻分佈在圖表的其餘部分。然後每次將新數據添加到圖表時,標籤都保持在同一個位置,只是標籤文本被更新。

下面是兩張照片,應該說明我在做什麼。

第一張照片是從16:10:00到16:11:00範圍內的數據。

這是我想什麼任何的開始/結束日期:

第二張圖片顯示了當我添加5秒新的數據並刪除5秒舊的數據會發生什麼。新的數據刷新後

圖:

下面是我用我的x軸格式代碼片段。

  chart.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Seconds;    
      chart.ChartAreas[0].AxisX.Interval = timeDiff.TotalSeconds/numXTicks; 
      chart.ChartAreas[0].AxisX.Minimum = timeMin.ToOADate(); 
      chart.ChartAreas[0].AxisX.Maximum = timeMax.ToOADate(); 
      chart.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd" + Environment.NewLine + "HH:mm:ss"; 
      chart.ChartAreas[0].AxisX.LabelStyle.IsEndLabelVisible = true; 
      chart.ChartAreas[0].AxisX.IsMarginVisible = true; 

感謝您的任何幫助。很長時間的潛伏者和第一次海報。

回答

0

對於任何可能好奇的人來說,通過將IntervalType設置爲MilliSeconds,我找到了一個合理的解決方法。

  chart.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Milliseconds; 
      chart.ChartAreas[0].AxisX.Interval = unixDiff.TotalMilliseconds/numXTicks; 

雖然這並不一定到位,由具有間隔均勻地將乘在圖表和不會導致標籤將在整個整齊標記的間隔的一小部分固定x軸標籤圖表。