scichart - SciChart:ColumnChart - DataSeries.Append
问题描述
我在 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 对于我的案例是相同的)所以这只是一个通知。
我不确定你是否会改变行为 - 现在只是分享我的经验......
解决方案
SciChart 的列系列会根据您可用的列自动计算数据点的宽度。
如果您有 0,1,2,3,4,5,6,7,8,9 列 ...然后在位置 0 添加一个新列,那么这个计算就会出错。
避免这种副作用的方法是:
- 更新项目而不是附加具有重叠值的新列
FastColumnRenderableSeries.UseUniformWidth
使用属性和覆盖列宽计算FastColumnRenderableSeries.DataPointWidth
- (高级)通过覆盖GetDataPointWidth()方法覆盖列宽计算。
在SciChart WPF 文档页面了解更多 Column 系列的工作原理。
推荐阅读
- python - 使用 Python 从 Web 目录下载多个 csv 文件并将它们存储在磁盘中,使用锚文本作为文件名
- scala - Spark/Scala 在不同的数据子集上使用相同的函数重复创建 DataFrame
- spring-boot - 如何从 Java JPA 中的列表中延迟加载对象?
- sql-server - 从 SQL Server 代理作业执行 python 脚本得到错误
- javascript - 有没有办法检查 React 组件中的路由数量?
- c - 如何配置 Git 以忽略自动生成代码中的琐碎更改(例如时间戳)?
- vba - 奇怪的链接器,它们不适用于智能感知
- python - 在函数中创建一个空列表并将其传递给全局范围。(在函数中初始化空列表)
- excel - 使用 VBA 从 Word 对外部工作簿执行 Vlookup
- c# - c#visual studio .Inserted 值不显示在表格中