如何在小图表上绘制许多数据点的图形。

4

我有10万个x/y点(距离上的高度)需要在一个高400px,宽600px的图表上绘制。

如何创建一个“预估”曲线,以便10万个点看起来像一个图表,而不是一堆挤在一起的线条?

是否有一个图表控件可以帮助我实现缩放和此功能?


2个回答

0

我曾经通过将数据沿x轴分成像素段(在您的情况下为400)来实现这一点。我会在每个集合中找到最大值和最小值,然后在该x点上绘制一条垂直线。这非常简单,您会对结果感到惊讶。

仅当您拥有比绘图区域内的x坐标更多的数据点时才有效。但是那是您需要优化的时候。

例如,在x偏移233处,您有以下数据点。

(1000202, 40) (1000203, 43) (1000204, 47) (1000205, 43) (1000206, 38) (1000208, 35)

这将导致从点(233,35)到(233,47)绘制一条单独的垂直线。


0

我不知道你是否已经找到了问题的答案,但是我开发了一个控件,可以对输入数据进行Nyquist重采样(这样你只渲染能看到的部分),并且使用即时模式渲染(这样可以获得最佳性能)。结果是,它可以在30FPS下平滑地渲染100,000个xy点。

Tormod提出的答案适用于线图-将输入数据分成多个区间并找到最小/最大值,然后绘制这些值。但是对于其他类型的图表,您需要更高级的技术。另一个效果是混叠。为了解决这个问题,您可以a.) 对数据进行更多的重采样(例如2x像素宽度,4x像素宽度),b.) 在绘制时使用抗锯齿或c.) 使用低通滤波器对数据进行重采样。这些技术在数字信号处理中很常见,并且适用于2D绘图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接