【问题标题】:How to chart graph with many points on small graph如何在小图上绘制带有许多点的图
【发布时间】:2011-05-29 09:58:03
【问题描述】:

我有 100 000 个 x/y 点(高度与距离)要绘制在高度为 400 像素、宽度为 600 像素的图表上。

如何创建一个“估计”曲线,使 100 000 个点看起来像一个图形,而不是很多成束的线?

是否有图表控件可以通过缩放为我做到这一点?

【问题讨论】:

标签: .net silverlight graph


【解决方案1】:

我通过沿 x 轴将数据划分为像素段(在您的情况下为 400)来执行此操作。我会在每组中找到最大值和最小值,并在该 x 点上画一条垂直线。这非常简单,您会对结果感到惊讶。 它仅在绘图区域内的数据点多于 x 坐标时才有效。但无论如何,那是您需要优化的时候。

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

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

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

【讨论】:

    【解决方案2】:

    我不知道您是否找到了问题的答案,但我开发了一个控件,它对输入数据进行奈奎斯特重采样(因此您只渲染您可以看到的内容)和即时模式渲染(因此您可以获得最佳性能) .结果是,它可以以 30FPS 的速度平滑渲染 100,000 个 xy 点。

    Tormod 提出的答案适用于折线图 - 将输入数据分成箱并找到最小值/最大值,然后绘制它们,但是对于其他图表类型,您需要更高级的技术。您将看到的另一个效果是混叠。为了解决这个问题,您可以 a.) 重新采样到更多 bin(例如 2x pixelWidth、4x pixelWidth),b.) 在绘图时使用抗锯齿或 c.) 在下采样之前使用低通过滤数据的重采样算法。这些技术在数字信号处理中很常见,适用于 2D 绘图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多