c# – 图表控制滚动时的Y轴自动缩放

前端之家收集整理的这篇文章主要介绍了c# – 图表控制滚动时的Y轴自动缩放前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在搜索一段时间,但仍然没有找到任何好的解决方案我的问题.我想使MS Chart在滚动时自动重新缩放Y轴,以确保所有数据点都可见.这里的扭曲是,我需要有能力排除某些系列被用于汽车秤.到目前为止,我只找到了解决方案,可以遍历AxisViewChanged事件的整个点集合,当您有大量的积分和一系列的迭代时,这种方法效果不佳.我想知道是否有任何方法通过获取当前可见的最小值和最大X值之间的数据点来缩小搜索范围.任何帮助将不胜感激.

编辑Heres图像.正如你可以看到中间的烛台不是完全可见的.

解决方法

你可以试试这个代码
DateTime date = DateTime.Now;
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.ChartAreas[0].AxisX.Maximum = 20;
        Random r = new Random((int)date.Ticks);

        chart1.Series[0].ChartType = SeriesChartType.Candlestick;
        chart1.Series[0].Color = Color.Green;
        chart1.Series[0].XValueType = ChartValueType.Time;
        chart1.Series[0].IsXValueIndexed = true;
        chart1.Series[0].YValuesPerPoint = 4;
        chart1.Series[0].CustomProperties = "MaxPixelPointWidth=10";
        for (int i = 0; i < 100; i++ )
        {
            DataPoint point = new DataPoint(date.AddHours(i).ToOADate(),new double[] { r.Next(10,20),r.Next(30,40),r.Next(20,30),30) });
            chart1.Series[0].Points.Add(point);
        }

        int min = (int)chart1.ChartAreas[0].AxisX.Minimum;
        int max = (int)chart1.ChartAreas[0].AxisX.Maximum;

        if (max > chart1.Series[0].Points.Count)
            max = chart1.Series[0].Points.Count;

        var points = chart1.Series[0].Points.Skip(min).Take(max - min);

        var minValue = points.Min(x => x.YValues[0]);
        var maxValue = points.Max(x => x.YValues[1]);

        chart1.ChartAreas[0].AxisY.Minimum = minValue;
        chart1.ChartAreas[0].AxisY.Maximum = maxValue;

猜你在找的C#相关文章