2017-07-14 16 views
0

winformにグラフコントロールがあります。
ローカルPC時間の12Hクロックリピート時。
チャートは11から0
から始まるので、問題はときに12時二十または12時50分または12時10分 私は番号が0 グラフ作成時間がゼロから始まることはありません

X軸上の私のメインのINITで開始するように得ることができないということです以下のようなチャート:次に

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.DataBindXY(Enumerable.Range(0,12).ToArray(), numbers); 

アップデートで

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

を交換してください:削除するSakisに加えて

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

という配列項目を1時間増やして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

: 設定AxisXすべてのグラフの系列が正しく表示されるように-1 0.12スケールを得るためには12が必要です。

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()); 
関連する問題