图表压缩

我正在编写一个C#桌面应用程序,它需要一些值的图形表示(XoY)(Y – 值,X – (in)时间)。

chart1.Series[0].Points.AddXY(time, new Random().Next(-325, 531)); //this operation occurs at a set interval 

该操作完成其工作,增加值; 然而,随着时间的推移,图表倾向于“挤压”自己,这使得解释它变得更加困难。

阶段0阶段1阶段2

我想让图形产生更好的输出,尽管有点数。

笔记

  1. 我认为图形表示的一个很好的例子是由示波器生成的。
  2. 图表是样条曲线
  3. 在计时器的勾选时触发点加法。

根据您的需要,有几种选择。 我的猜测是你要保留所有数据点,只想添加一个滚动条。 你可以这样写:

 ChartArea A1 = chart1.ChartAreas["yourChartAreaByNameOrNumber"]; A1.AxisX.ScrollBar.Size = 12; // show either just the center scroll button.. A2.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll; // .. or include the left and right buttons: A1.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All ^ ScrollBarButtonStyles.ResetZoom; // looks better inside, but ymmv A1.AxisX.ScrollBar.IsPositionedInside = true; A1.AxisX.ScrollBar.Enabled = true; A1.AxisX.ScaleView.Size = 100; // number (!) of data points visible 

您可能想要玩大小和位置。 请选择您希望随时可见的数据点数量。

如果希望可见区域跟随示波器中的新数据,则可以设置滚动位置:

 Series S1 = chart1.Series["yourSeriesByNameOrNumber"]; A1.AxisX.ScaleView.Position = S1.Points.Count - A1.AxisX.ScaleView.Size; 

请注意,您需要在添加任何数据后再次设置它!

如果您还想让用户调整缩放范围设置

 A1.AxisX.CursorX.IsUserSelectionEnabled = true;