2017-07-14 34 views
0

我有一個圖表控件應該記錄一些小時計數的winform。
在本地PC時間重複12H時鐘。
所以圖表從0開始到11
的問題是,當它的12:20或12:50或12:10 我不能得到的編號以0 X軸製圖小時不會從零開始

我的主要inits啓動如圖表:

int[] numbers = new int[11] {12,11,10,91,82,7,66,5,44,3,2,1}; 
chart1.ChartAreas[0].AxisX.Maximum = 11; 
chart1.ChartAreas[0].AxisX.Minimum = 0; 
chart1.ChartAreas[0].AxisX.Interval = 1; 

然後循環更新和重繪像下面

DateTime currentTime = DateTime.UtcNow.ToLocalTime(); 
int hour12 = (currentTime.Hour % 12); 
numbers[hour12]++;  
chart1.Series["total"].Points.DataBindY(numbers); 

我也試過,但它並沒有幫助這裏的圖表。

chart1.ChartAreas[0].AxisX.IsMarginVisible = false; 
+0

[如何使折線圖從0個X軸開始](https://stackoverflow.com/questions/23750220/how-to-make-line-chart-start-from-0 -x-軸) –

+0

以及我希望如此,但該解決方案不起作用,我也發佈之前嘗試過。 – user3800527

+0

'DataBindXY'怎麼樣? – Sakis

回答

1

更換

chart1.Series["total"].Points.DataBindY(numbers); 

chart1.Series["total"].Points.DataBindXY(Enumerable.Range(0,12).ToArray(), numbers); 

更新: 設置AxisX使所有圖表系列顯示正確:

chart1.ChartAreas[0].AxisX.Maximum = 12; 
chart1.ChartAreas[0].AxisX.Minimum =-1; 
chart1.ChartAreas[0].AxisX.Interval = 1; 
+0

導致System.ArgumentOutOfRangeException 它不會在我不替換該行時嘗試 – user3800527

+0

嘗試使用'Enumerable.Range(0,12).ToArray()'。你的這行也是int [] numbers = new int [11] {12,11,10,91,82,7,66,5,44,3,2,1};'不會像你那樣編譯使用12個整數初始化一個11位int數組 – Sakis

+0

數組pos從零開始,你可以做數字[0] = 1; – user3800527

1

除了Sakis刪除-1和12獲得0..11的比例。

chart1.ChartAreas[0].AxisX.Maximum = 12; 
chart1.ChartAreas[0].AxisX.Minimum =-1; 
chart1.ChartAreas[0].AxisX.Interval = 1; 
chart1.ChartAreas[0].AxisX.CustomLabels.Add(-1.5, -0.5, "Hour"); 
chart1.ChartAreas[0].AxisX.CustomLabels.Add(11.5, 12.5, " "); 
for(int i=0;i<12;i++) chart1.ChartAreas[0].AxisX.CustomLabels.Add(i-0.9, i+0.9, i.ToString());