由于290万组数据量较大,为了保证性能和可视化效果,我们可以采用数据分组、抽样等方式进行优化。

以下是一个简单的示例代码,用于生成基于Y、X数据的走势曲线图:

XAML代码:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="走势曲线图" Height="500" Width="800">
    <Grid>
        <Canvas x:Name="canvas" Background="White" Margin="10">
            <Path x:Name="path" Stroke="Blue" StrokeThickness="2"/>
        </Canvas>
    </Grid>
</Window>

C#代码:

public partial class MainWindow : Window
{
    private const int MaxDataCount = 10000; // 最大数据点数
    private const int SampleInterval = 10; // 抽样间隔

    private List<Point> data; // 原始数据
    private List<Point> sampledData; // 抽样后的数据

    public MainWindow()
    {
        InitializeComponent();

        // 生成随机数据,实际应用中应从外部数据源获取
        Random rand = new Random();
        data = new List<Point>();
        for (int i = 0; i < 2900000; i++)
        {
            data.Add(new Point(i, rand.NextDouble() * 100));
        }

        // 抽样
        sampledData = new List<Point>();
        int count = data.Count;
        int step = count / MaxDataCount;
        for (int i = 0; i < count; i += step)
        {
            sampledData.Add(data[i]);
        }

        // 绘制曲线
        DrawLine(sampledData);
    }

    private void DrawLine(List<Point> points)
    {
        if (points.Count < 2)
        {
            return;
        }

        PathGeometry pathGeometry = new PathGeometry();
        PathFigure pathFigure = new PathFigure();
        pathFigure.StartPoint = points[0];
        for (int i = 1; i < points.Count; i++)
        {
            if (i % SampleInterval == 0) // 抽样
            {
                pathFigure.Segments.Add(new LineSegment(points[i], true));
            }
        }
        pathGeometry.Figures.Add(pathFigure);
        path.Data = pathGeometry;
    }
}

在实际应用中,我们还可以通过添加坐标轴、标注、交互等功能来进一步完善走势曲线图

WPF 根据Y、X的值生成一个走势曲线图Y、X为一组数据共有290万组数据详细代码

原文地址: http://www.cveoy.top/t/topic/chO6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录