我目前正在构建一个绘制流数据图表的应用程序。我可以很好地接收和添加数据点到图表,但是在添加每个点之后,图形会改变其比例以自动包括所有数据点(即,随着添加更多点,点越来越近)。我怎么能关掉这个?
理想情况下,我希望图表只需沿x轴滚动,而不是每次添加点时设置比例。这样做的最佳方式是什么?
以下是我用于在数据到达串口时添加数据点的代码:
chart1.Series["Series1"].Points.AddY(parsed);
图表只是默认的快速线图。以下是绘制数据随时间变化的图表的屏幕截图。正如您所看到的,它只是随着时间的推移压缩图形而不是仅仅保留刻度并向右滚动。
答案 0 :(得分:1)
这将禁用自动缩放:
chart1.ChartAreas[0].AxisY.ScaleBreakStyle.Enabled = false;
chart1.ChartAreas[0].AxisY.Maximum = 0.3;
chart1.ChartAreas[0].AxisY.Minimum = -0.3;
答案 1 :(得分:0)
我是按照以下方式完成的:
编辑是一个模拟,它在每个计时器上添加点,最小值和最大值递增,因此显示的部分会增加,因此会产生滚动效果。
private void mockTimerTick(object sender, EventArgs e)
{
int i;
if (isRunning)
return;
lock (_syncObj)
{
isRunning = true;
for (i = currentOffset; i < samplesPerSegment + currentOffset; i++)
{
_series.Points.AddXY(mockPoints[i].X, mockPoints[i].Y);
if (i >= _chart.ChartAreas["ChartArea1"].AxisX.Maximum)
{
_chart.ChartAreas["ChartArea1"].AxisX.Maximum++;
_chart.ChartAreas["ChartArea1"].AxisX.Minimum++;
_chart.ChartAreas["ChartArea1"].AxisX.ScaleView.Scroll(_chart.ChartAreas["ChartArea1"].AxisX.Maximum);
}
}
isRunning = false;
}
currentOffset = i;
}