SciChart:ColumnChart - DataSeries.Append

时间:2018-05-25 19:56:26

标签: scichart

我在SciChart for WPF中注意到的潜在问题

  • 从SDK(2D图表 - 柱形图)
  • 获取ColumnChart的标准示例
  • 构建并运行;结果如下: enter image description here

  • 进行以下代码更改(参见(1)和(2))

    private void ColumnChartExampleViewOnLoaded(object sender, RoutedEventArgs e)
    {
    
        var dataSeries = new XyDataSeries<double, double> {SeriesName = "Histogram"};
    
        var yValues = new double[] { 0.1, 0.2, 0.4, 0.8, 1.1, 1.5, 2.4, 4.6, 8.1, 11.7, 14.4, 16.0, 13.7, 10.1, 6.4, 3.5, 2.5, 1.4, 0.4, 0.1};
    
        using (this.sciChart.SuspendUpdates())
        {
            for (int i = 0; i < yValues.Length; i++)
            {
                // DataSeries for appending data
                dataSeries.Append(i, yValues[i]);
            }
    
            this.columnSeries.DataSeries = dataSeries;
            this.columnSeries.DataSeries.AcceptsUnsortedData = true; //(1)
        }
    
        dataSeries.Append(0, 1); //(2)
        this.sciChart.ZoomExtents();
    }
    
  • 以下是结果: enter image description here

即。如果我对已经存在的X val使用Append方法 - UI栏将更改为行。 我不知道它是否是预期的行为,但对于我的情况,我正在更新飞行直方图,并且通常相同的X值具有新的Y值。 结果 - UI行为混淆了...... 我找到了我的案例的解决方法(我使用的是Update方法,因为X和索引对我来说是相同的)所以这只是一个通知。

我不确定你是否会改变这种行为 - 暂时分享我的经验......

1 个答案:

答案 0 :(得分:1)

SciChart的列系列会根据您可用的列自动计算数据点的宽度。

如果您有0,1,2,3,4,5,6,7,8,9列...然后在0位添加一个新列,则此计算会变得混乱。

避免这种副作用的方法是:

  • 更新项目,而不是追加重叠值的新列
  • 使用属性FastColumnRenderableSeries.UseUniformWidthFastColumnRenderableSeries.DataPointWidth
  • 覆盖列宽计算
  • (高级)通过覆盖GetDataPointWidth()方法覆盖列宽计算。

详细了解Column系列在SciChart WPF Documentation page的工作原理。