自动放大波形的波纹
本文关键字:波形 放大 | 更新日期: 2023-09-27 18:30:01
我以图表的形式显示我的数据。但来自传感器的数据总是在变化。如何自动放大到峰峰值,以便跟踪波形?例如,Y轴显示0到10,然而,数据在4到4.2之间变化,有时在6到6.3之间变化。这是一个小小的涟漪。如果我将Y轴间隔保持在0~10,我看不到波形(只会看到一条直线)。我知道如何手动放大Y轴间隔。有什么方法可以自动显示波纹吗?
DataPoint dp0 = new DataPoint(x, index);
DataPoint dp1 = new DataPoint(x, middle);
DataPoint dp2 = new DataPoint(x, ring);
chart3.Series[0].Points.RemoveAt(0);
chart3.Series[0].Points.Add(dp0);
chart4.Series[0].Points.RemoveAt(0);
chart4.Series[0].Points.Add(dp1);
chart5.Series[0].Points.RemoveAt(0);
chart5.Series[0].Points.Add(dp2);
x++;
private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
if ((numericUpDown3.Value - (decimal)0.1) <= numericUpDown4.Value)
{
numericUpDown3.Value = numericUpDown4.Value + (decimal)0.1;
}
chart3.ChartAreas[0].AxisY.Maximum = Convert.ToDouble(numericUpDown3.Value);
}
private void numericUpDown4_ValueChanged(object sender, EventArgs e)
{
if ((numericUpDown4.Value + (decimal)0.1) >= numericUpDown3.Value)
{
numericUpDown4.Value = numericUpDown3.Value - (decimal)0.1;
}
chart3.ChartAreas[0].AxisY.Minimum = Convert.ToDouble(numericUpDown4.Value);
}
除了jstreet的滚动窗口,您还必须设置AxisY.Minimum
和AxisY.Maximum
,正如您已经了解的那样。
当您应用jstreet的滚动窗口解决方案时,您的数据集将始终包含N
DataPoint
s。在他的示例代码中,他使用N=10
。如果你用DataPoint
集chart3.Series[0].Points
的最小值和最大值来调整y轴,你会有一个滚动窗口,当你的数据进入时,它会自动放大波纹:
using System.Linq;
...
chart3.ChartAreas[0].AxisY.Minimum =
chart3.Series[0].Points.Min(dp => dp.YValues.Single());
chart3.ChartAreas[0].AxisY.Maximum =
chart3.Series[0].Points.Max(dp => dp.YValues.Single());
根据数据的性质,您可能会注意到演示中存在一些抖动。如果这成为一个问题,您将不得不平滑用于调整y轴的值。