3

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

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

非常感谢。

4

4 回答 4

2

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

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

于 2012-04-21T15:00:27.500 回答
1

一种解决方案可能是将比例减小到 1:10000,从而在保持相同绘制的同时大大减少绘制点。

您可以通过在将数据数组提供给图​​表之前对其进行处理来做到这一点。

于 2013-03-02T20:58:02.473 回答
1

尝试这个:

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

或者

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

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

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

对于其他类型的图表。我也知道。

于 2016-11-17T09:34:39.493 回答
0

试图留下评论,但由于代表不能,每'x'点手动更新图表:

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

对速度和效率有巨大影响。

于 2012-05-17T09:16:16.917 回答