2017-07-14 119 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());