Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在小图上绘制多点图_.net_Silverlight_Graph - Fatal编程技术网

.net 如何在小图上绘制多点图

.net 如何在小图上绘制多点图,.net,silverlight,graph,.net,Silverlight,Graph,我有100000个x/y点(高度与距离之比)要绘制在一个高度为400px、宽度为600px的图表上 我如何创建一条“估计”曲线,使100000个点看起来像一个图形,而不是许多聚集的线 是否有一个图表控件可以通过缩放为我做到这一点?我曾经通过沿x轴将数据划分为像素段(在您的示例中为400)来做到这一点。我会在每个集合中找到最大值和最小值,然后在x点上画一条垂直线。它非常简单,你会对结果感到惊讶。 仅当绘图区域内的数据点多于x个坐标时,此功能才起作用。但无论如何,这正是你需要优化的时候 例如,在x偏

我有100000个x/y点(高度与距离之比)要绘制在一个高度为400px、宽度为600px的图表上

我如何创建一条“估计”曲线,使100000个点看起来像一个图形,而不是许多聚集的线


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

我曾经通过沿x轴将数据划分为像素段(在您的示例中为400)来做到这一点。我会在每个集合中找到最大值和最小值,然后在x点上画一条垂直线。它非常简单,你会对结果感到惊讶。 仅当绘图区域内的数据点多于x个坐标时,此功能才起作用。但无论如何,这正是你需要优化的时候

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

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


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

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


Tormod提出的答案适用于折线图——将输入数据划分为多个存储单元,找到最小/最大值,然后绘制这些存储单元,但是对于其他类型的图表,您需要更先进的技术。您将看到的另一个效果是别名。为了解决这个问题,您可以a.)对更多的存储单元进行重采样(例如,2x像素宽度、4x像素宽度),b.)在绘制时使用抗锯齿,或者c.)使用重采样算法,在下采样之前对数据进行低通过滤。这些技术在数字信号处理中很常见,适用于二维绘图

是的,这是为大量数据设计的控件:。您还可以查看其他免费版本的图表,如visiblox。