SciChart:柱形图 - DataSeries.Append
SciChart: ColumnChart - DataSeries.Append
我在 SciChart for WPF 中注意到的一个潜在问题
- 以SDK中ColumnChart的标准示例(二维图表-柱形图)
构建和运行;结果如下:
进行以下代码更改(参见(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 和索引对于我的案例是相同的)所以这只是一个通知。
我不确定你是否会改变行为 - 现在只是分享我的经验...
SciChart 的列系列会根据您可用的列自动计算数据点的宽度。
如果您有 0、1、2、3、4、5、6、7、8、9 列...然后在位置 0 添加一个新列,此计算就会出错。
避免这种副作用的方法是:
- 更新项目而不是附加具有重叠值的新列
- 使用属性
FastColumnRenderableSeries.UseUniformWidth
和 FastColumnRenderableSeries.DataPointWidth
覆盖列宽计算
- (高级)通过覆盖 GetDataPointWidth() 方法来覆盖列宽计算。
在 SciChart WPF Documentation page 了解 Column 系列的更多工作原理。
我在 SciChart for WPF 中注意到的一个潜在问题
- 以SDK中ColumnChart的标准示例(二维图表-柱形图)
构建和运行;结果如下:
进行以下代码更改(参见(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 和索引对于我的案例是相同的)所以这只是一个通知。
我不确定你是否会改变行为 - 现在只是分享我的经验...
SciChart 的列系列会根据您可用的列自动计算数据点的宽度。
如果您有 0、1、2、3、4、5、6、7、8、9 列...然后在位置 0 添加一个新列,此计算就会出错。
避免这种副作用的方法是:
- 更新项目而不是附加具有重叠值的新列
- 使用属性
FastColumnRenderableSeries.UseUniformWidth
和FastColumnRenderableSeries.DataPointWidth
覆盖列宽计算
- (高级)通过覆盖 GetDataPointWidth() 方法来覆盖列宽计算。
在 SciChart WPF Documentation page 了解 Column 系列的更多工作原理。