0

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

我的数据源是“DataObject”列表,其中 dateAndTime 是 XAxis,consumerHT 和 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。

亲切的问候,罗伯特

4

1 回答 1

0

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

<telerikChart:RadChart.SamplingSettings>
    <telerikCharting:SamplingSettings SamplingThreshold="100" />
</telerikChart:RadChart.SamplingSettings>

由您决定如何在图表中显示其他数据点的趋势。例如,如果你想显示缺失值(数据点)的平均值,那么你可以像下面这样:

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

就像“平均”一样,您可以选择 SamplingFunction 来选择丢失数据点的最小值、最大值、总和等。

于 2015-03-11T08:40:14.407 回答