1

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

  • 以 SDK 中 ColumnChart 的标准示例(2D Charts - Column Chart)
  • 构建和运行;结果如下: 在此处输入图像描述

  • 进行以下代码更改(参见 (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();
    }
    
  • 结果如下: 在此处输入图像描述

即,如果我对已经存在的 X val 使用 Append 方法 - UI 栏正在更改为线条。我不知道这是否是预期的行为,但就我而言,我正在即时更新直方图,并且通常相同的 X 值具有新的 Y 值。结果 - UI 行为令人困惑......我为我的案例找到了解决方法(我使用 Update 方法,因为 X 和 index 对于我的案例是相同的)所以这只是一个通知。

我不确定你是否会改变行为 - 现在只是分享我的经验......

4

1 回答 1

1

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

如果您有 0,1,2,3,4,5,6,7,8,9 列 ...然后在位置 0 添加一个新列,那么这个计算就会出错。

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

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

在SciChart WPF 文档页面了解更多 Column 系列的工作原理。

于 2018-05-28T11:20:32.383 回答