我正在使用C#,并且想绘制一个折线图来可视化我的数据,数据可以存储为双数组,数字可能非常大,可能超过100000,我也想更新数据源所有时间,但是当我使用Microsoft Win Chart时,如果数字太大,刷新率会很慢(20000会给用户带来非常糟糕的体验),我使用FastLine/FastPoint chartType,但它没有给我改进太大了,我也试过直接将数据绑定到Points.DataBindY方法,还是感觉不太好。
有没有人有如何处理这个问题的经验?
非常感谢。
您会发现,即使是最强大的图表控件,尝试绘制该点数(100k)也将不堪重负。我会质疑为什么甚至有必要这样做。你怎么可能区分图表上的 100k 点?似乎没有必要。大多数图表控件(我最熟悉 WPF 控件)允许您“采样”数据(通过采样阈值)。这允许您仍然保留数据的一般形状,但使用更少的数据点和更好的性能来做到这一点。
另外,绑定数据时要非常小心。对于许多图表控件,当您绑定数据时,绑定到图表的每个数据点都会导致图表刷新。您可以想象 100k 刷新会做什么 :(。如果可以,请在所有数据都绑定到图表后找到刷新图表的方法。
一种解决方案可能是将比例减小到 1:10000,从而在保持相同绘制的同时大大减少绘制点。
您可以通过在将数据数组提供给图表之前对其进行处理来做到这一点。
尝试这个:
chart1.Series[0].ChartType = SeriesChartType.FastLine;
或者
chart1.Series[0].ChartType = SeriesChartType.FastPoint;
如果您需要绘制超过 100,000 个数据点,您还可以考虑使用 FastLine 和 FastPoint 图表类型。它们不支持常规折线图和点图的所有功能,但会显着提高图表性能。
对于其他类型的图表。我也知道。