Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据点快速添加到WPF图表中_C#_Wpf_Xaml_Animation_Charts - Fatal编程技术网

C# 如何将数据点快速添加到WPF图表中

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

您好,我有一个大数据库,从中我获取1500个值,以便在图表中显示

我的问题是显示所有点需要很长时间,我认为这是因为动画设置

如何更改动画的速度,或者是否有方法更快地显示点

<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 &amp; 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,您只需通过绑定或直接将数据集一次添加为数组,即可在毫秒内呈现。如果您需要一个接一个地添加数据点,它的实时功能也非常惊人

我强烈建议你试试,他们提供试用许可证。我尝试使用DevExpress制作图表,我也拥有该软件的许可证,它们的图表功能超越了几个数据点,它们的图表更适合于数据点较少的仪表盘。我也试过,用过 一段时间的LimeNoTrink库,而原始的性能与ScHaCt相当,它们的样式绝对是可怕的,它们的MVVM能力几乎都不存在,事实上,当你查看他们的文档时,你会发现在代码后面出现了许多对问题的解决方案建议。他们的支持论坛和问答库也非常稀少,这通常会让我感到厌烦,因为在某个时候,每个开发人员都会遇到他/她需要寻找解决方案的问题


老实说,如果您只查看图表1500个数据点,并且拥有DevExpress许可证,那么请务必使用它们,因为我认为它们仍然可以处理1500个点,尽管更多可能会变得棘手。但是,如果您曾经看到需要更大数据集的图表功能,那么我就不能对Scichart进行足够高的评价。为什么?因为我从早期版本1.3.x.xxxx开始就使用该库。我真的相信它们是WPF空间中最好的图表库

我知道这是一个老问题,但我想与大家分享一下我对WPF制图的想法,它不仅仅是绘制几个条形图、散点图或直线图

可能每个人都同意,stock WPF库并不是为了处理数千甚至数百万个数据点而构建的。无论我尝试了什么样的解决方法,比如数据采样,我从来没有真正对库存WPF图表功能感到满意。如果您正在处理图表数据,而不仅仅是一次性原型设计,我强烈建议您查看专业的WPF图表库

我特别使用了第三方供应商WPF库多年,对其功能评价不够高。我经常绘制数十万个,有时是数百万个分散的数据点,最近还绘制了包含大量数据的3D图表,并且发现Scichart的性能非常好。这比“免费”要贵,但我觉得这项投资非常值得,因为(我尝试将您的问题纳入其中):

  • 2D和3D库坚如磐石,我的意思是