C# 减少图表可视化列表中的数据项数量

C# 减少图表可视化列表中的数据项数量,c#,charts,telerik,interpolation,simplification,C#,Charts,Telerik,Interpolation,Simplification,在我当前的项目中,我必须在移动设备上的telerik windows phone图表控件中可视化大约30000个条目。显示所有这些条目会减慢速度并在几秒钟内阻塞UI 我的数据源是一个DataObject列表,其中dateAndTime是XAxis,consumptionHT和consumptionNT是YAxis 有两个不同的值,因为对于日间消耗,填充HT,消耗NT为0, 对于夜间消耗,填充NT,消耗HT为0。只有一个消费价值的解决方案也会非常有用 public class DataOject

在我当前的项目中,我必须在移动设备上的telerik windows phone图表控件中可视化大约30000个条目。显示所有这些条目会减慢速度并在几秒钟内阻塞UI

我的数据源是一个DataObject列表,其中dateAndTime是XAxis,consumptionHT和consumptionNT是YAxis

有两个不同的值,因为对于日间消耗,填充HT,消耗NT为0, 对于夜间消耗,填充NT,消耗HT为0。只有一个消费价值的解决方案也会非常有用

public class DataOject
{
    public DateTime dateAndTime { get; set; }
    public float consumptionHT { get; set; }
    public float consumptionNT { get; set; }
}
我读过一些关于Ramer–Douglas–Peucker算法的文章,但我不知道是否有更好/更高性能的解决方案可以在不丢失太多信息(如极值)的情况下减少列表的大小

有人对如何处理这个问题有什么建议吗? 我目前正在使用C for Windows Universal App

亲切问候,,
Robert

您可以使用SamplingFunction和SamplingThreshold来解决此问题。 假设您只需要200个数据点,而不是图中的30000个数据点,那么可以将采样阈值设置为200,如下所示

<telerikChart:RadChart.SamplingSettings>
    <telerikCharting:SamplingSettings SamplingThreshold="100" />
</telerikChart:RadChart.SamplingSettings>
由您决定如何在图表中显示其他数据点的趋势。例如,如果要显示缺失值数据点的平均值,则可以按如下方式进行:

<telerikChart:RadChart.SamplingSettings>
        <telerikCharting:SamplingSettings SamplingFunction="Average" SamplingThreshold="200" />
 </telerikChart:RadChart.SamplingSettings>

与“平均值”一样,您可以选择采样函数来选择最小值、最大值、总和等。。错过的数据点。

谢谢您的回答。我认为在Windows Telerik for Universal应用程序中没有RadChart控件。只有一种叫做RadCartesianChart的东西,但该图表没有采样设置。