C# 如何将数据点快速添加到WPF图表中
您好,我有一个大数据库,从中我获取1500个值,以便在图表中显示 我的问题是显示所有点需要很长时间,我认为这是因为动画设置 如何更改动画的速度,或者是否有方法更快地显示点C# 如何将数据点快速添加到WPF图表中,c#,wpf,xaml,animation,charts,C#,Wpf,Xaml,Animation,Charts,您好,我有一个大数据库,从中我获取1500个值,以便在图表中显示 我的问题是显示所有点需要很长时间,我认为这是因为动画设置 如何更改动画的速度,或者是否有方法更快地显示点 <UserControl x:Class="Ipte.UI.Pages.StatisticsPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mic
<UserControl x:Class="Ipte.UI.Pages.StatisticsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:gcl="clr-namespace:GuiControlLibrary;assembly=GuiControlLibrary"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:time="clr-namespace:Ipte.UI"
xmlns:chartToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
mc:Ignorable="d"
Height="800" Width="1200">
<UserControl.Resources>
<Style x:Key="Scater" TargetType="chartToolkit:ScatterDataPoint">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="chartToolkit:ScatterDataPoint">
<Viewbox x:Name="viewbox">
<!--<Ellipse Width="1" Height="1" Fill="Black"/>-->
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Width" Value="4"/>
<Setter Property="Height" Value="4"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid x:Name="filterGrid" Grid.Column="0" Margin="4">
<StackPanel>
<TextBlock Text="" Margin="2"/>
<toolkit:DatePicker x:Name="dpStartDate" Margin="2" />
<time:TimePicker x:Name="tpStartTime" Margin="2"/>
<TextBlock Text="End date & time:" Margin="2"/>
<toolkit:DatePicker x:Name="dpEndDate" Margin="2"/>
<time:TimePicker x:Name="tpEndTime" Margin="2"/>
<gcl:GuiGroupBox Header="Select router" BorderBrush="LightGray">
<UniformGrid Rows="2" Columns="2">
<CheckBox x:Name="cbEr11" Content="ER 1.1" Margin="2"/>
<CheckBox x:Name="cbEr12" Content="ER 1.2" Margin="2"/>
<CheckBox x:Name="cbEr21" Content="ER 2.1" Margin="2"/>
<CheckBox x:Name="cbEr22" Content="ER 2.1" Margin="2"/>
</UniformGrid>
</gcl:GuiGroupBox>
<TextBlock Text="" Margin="2"/>
<ComboBox x:Name="cmbGoodBad" Margin="2"/>
<TextBlock Text="" Margin="2"/>
<TextBox x:Name="" Margin="2"/>
<TextBlock Text="" Margin="2"/>
<TextBox x:Name="" Margin="2"/>
<gcl:GuiGroupBox Header="Select value" BorderBrush="LightGray">
<StackPanel>
<RadioButton x:Name="combValueA" Content="Value A" Margin="2"/>
<RadioButton x:Name="combValueB" Content="Value B" Margin="2"/>
<RadioButton x:Name="combValueC" Content="Value C" Margin="2"/>
</StackPanel>
</gcl:GuiGroupBox>
<Button x:Name="btnResetFilters" Content="Reset filters" Margin="2 10 2 2" Click="ResetFilters_Click"/>
<Button x:Name="btnUpdateChart" Content="Update Chart" Margin="2 2 2 2" Click="UpdateChartAndFilters_Click"/>
<Button x:Name="btnLoadFile" Content="Load file..." Grid.Column="0" VerticalAlignment="Top" Margin="2" Visibility="Visible" Click="OpenFile_Click"/>
</StackPanel>
<Button x:Name="deleteDatabase" Content="Delete database" Grid.Column="0" VerticalAlignment="Bottom" Margin="2" Click="deleteDatabase_Click"/>
</Grid>
<chartToolkit:Chart Grid.Column="1" x:Name="dataChart">
<chartToolkit:Chart.Series>
<chartToolkit:ScatterSeries x:Name="scatterSeries"
ItemsSource="{Binding}"
DependentValueBinding="{Binding Path=Value}"
IndependentValueBinding="{Binding Path=Key}"
IsSelectionEnabled="False"
AnimationSequence="Simultaneous">
<chartToolkit:ScatterSeries.IndependentAxis>
<chartToolkit:DateTimeAxis Orientation="X" Title="Time"/>
</chartToolkit:ScatterSeries.IndependentAxis>
<chartToolkit:ScatterSeries.DependentRangeAxis>
<chartToolkit:LinearAxis Orientation="Y" Title="Points" x:Name="yAxis"/>
</chartToolkit:ScatterSeries.DependentRangeAxis>
</chartToolkit:ScatterSeries>
<chartToolkit:LineSeries x:Name="lineSeriesMax"
Title="Maximum"
ItemsSource="{Binding}"
DependentValueBinding="{Binding Path=Value}"
IndependentValueBinding="{Binding Path=Key}">
</chartToolkit:LineSeries>
<chartToolkit:LineSeries x:Name="lineSeriesMin"
Title="Minimum"
ItemsSource="{Binding}"
DependentValueBinding="{Binding Path=Value}"
IndependentValueBinding="{Binding Path=Key}">
</chartToolkit:LineSeries>
<chartToolkit:LineSeries x:Name="lineSeriesAvg"
Title="Average"
ItemsSource="{Binding}"
DependentValueBinding="{Binding Path=Value}"
IndependentValueBinding="{Binding Path=Key}">
</chartToolkit:LineSeries>
</chartToolkit:Chart.Series>
</chartToolkit:Chart>
</Grid>
</UserControl>
这是我的点的显示方式:
此帖子已被其所有者自愿删除。此帖子已被其所有者自愿删除。我知道这是一个较老的问题,但我想与大家分享我对WPF中绘图的想法,不仅仅是绘制几条条形图或散点或直线 可能每个人都同意,stock WPF库并不是为了处理数千甚至数百万个数据点而构建的。无论我尝试了什么样的解决方法,比如数据采样,我从来没有真正对库存WPF图表功能感到满意。如果您正在处理图表数据,而不仅仅是一次性原型设计,我强烈建议您查看专业的WPF图表库 我特别使用了第三方供应商WPF库多年,对其功能评价不够高。我经常绘制数十万个,有时是数百万个分散的数据点,最近还绘制了包含大量数据的3D图表,并且发现Scichart的性能非常好。这比“免费”要贵,但我觉得这项投资非常值得,因为(我尝试将您的问题纳入其中):
- 2D和3D库坚如磐石,我的意思是渲染性能一流,绑定可以正常工作,几乎任何东西都可以定制,完全支持MVVM
- 文档和支持论坛可能是Scichart提供的最好的部分。大多数问题,甚至更棘手的问题都已经解决了,如果找不到什么,那么其他用户或支持团队会及时做出响应
- 特别是对于您的问题,使用Scichart,您只需通过绑定或直接将数据集一次添加为数组,即可在毫秒内呈现。如果您需要一个接一个地添加数据点,它的实时功能也非常惊人
老实说,如果您只查看图表1500个数据点,并且拥有DevExpress许可证,那么请务必使用它们,因为我认为它们仍然可以处理1500个点,尽管更多可能会变得棘手。但是,如果您曾经看到需要更大数据集的图表功能,那么我就不能对Scichart进行足够高的评价。为什么?因为我从早期版本1.3.x.xxxx开始就使用该库。我真的相信它们是WPF空间中最好的图表库 我知道这是一个老问题,但我想与大家分享一下我对WPF制图的想法,它不仅仅是绘制几个条形图、散点图或直线图 可能每个人都同意,stock WPF库并不是为了处理数千甚至数百万个数据点而构建的。无论我尝试了什么样的解决方法,比如数据采样,我从来没有真正对库存WPF图表功能感到满意。如果您正在处理图表数据,而不仅仅是一次性原型设计,我强烈建议您查看专业的WPF图表库 我特别使用了第三方供应商WPF库多年,对其功能评价不够高。我经常绘制数十万个,有时是数百万个分散的数据点,最近还绘制了包含大量数据的3D图表,并且发现Scichart的性能非常好。这比“免费”要贵,但我觉得这项投资非常值得,因为(我尝试将您的问题纳入其中):
- 2D和3D库坚如磐石,我的意思是