加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:33:17 所属栏目:百科 来源:网络整理
导读:我一直在搜索一段时间,但仍然没有找到任何好的解决方案我的问题.我想使MS Chart在滚动时自动重新缩放Y轴,以确保所有数据点都可见.这里的扭曲是,我需要有能力排除某些系列被用于汽车秤.到目前为止,我只找到了解决方案,可以遍历AxisViewChanged事件的整个点集
我一直在搜索一段时间,但仍然没有找到任何好的解决方案我的问题.我想使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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读