如果我要在Microsoft Chart中显示大量数据,如何快速刷新图表

时间:2012-04-21 14:15:54

标签: c# charts

我正在使用C#,并希望绘制折线图以显示我的数据,数据可以存储为双数组,数字可能非常大,可能超过100000,我也想更新数据源一直都在,但是当我使用Microsoft Win Chart时,如果数字太大(20000会给用户带来非常糟糕的体验),刷新率会非常慢,我使用的是FastLine / FastPoint chartType,但是不给我太多改进,而且我也尝试直接将数据绑定到Points.DataBindY方法,仍然感觉不太好。

有没有人有过如何处理这个问题的经验?

非常感谢。

4 个答案:

答案 0 :(得分:1)

你会发现尝试绘制这个点数(100k)即使是最强大的图表控件也会压倒一切。我会质疑为什么甚至有必要这样做。你怎么可能在图表上区分100k点?这似乎没必要。大多数图表控件(我最熟悉WPF控件)允许您“采样”数据(通过采样阈值)。这使您仍然可以保留数据的一般形状,但使用的数据点更少,性能更好。

另外,绑定数据时要非常小心。使用许多图表控件时,绑定数据时,绑定到图表的每个数据点都会刷新图表。您可以想象100k刷新会做什么:(。如果可以的话,找到一种方法在所有数据绑定到图表后刷新图表。

答案 1 :(得分:1)

解决方案可能是将比例缩小到1:10000,大大减少了绘制点,同时保持相同的平局。

您可以通过处理数据数组然后将其提供给图表来完成此操作。

答案 2 :(得分:0)

试图留下评论但不能因为代表,每隔'x'多次点手动更新图表:

https://stackoverflow.com/a/10621610/1360625

对速度和效率产生巨大影响。

答案 3 :(得分:0)

试试这个:

chart1.Series[0].ChartType = SeriesChartType.FastLine;

chart1.Series[0].ChartType = SeriesChartType.FastPoint;

如果您需要绘制超过100,000个数据点,您还可以考虑使用FastLine和FastPoint图表类型。它们不支持常规Line和Point图表的所有功能,但会显着提高图表性能。

https://blogs.msdn.microsoft.com/alexgor/2008/12/02/microsoft-chart-control-how-to-improve-chart-performance/

用于其他类型的图表。 idk要么。