个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

教程:使用 LightningChart .NET 实现 WPF 散点图

原创
数据可视化
来源:LightningChart
.net
WPF
报表
图表
数据可视化
图像处理
2024-11-12
.net
WPF
报表
图表
数据可视化
图像处理

WPF 散点图

在本文中,我们将通过使用交互式示例工具创建散点图来探索使用 Lightning Chart .NET。这个方便的工具让我们可以从可用的示例中生成 WPF 项目,从而更容易上手。

在深入研究之前,重要的是要记住使用 LC .NET 工具和框架所需的技术要求。与其他 .NET 文章一样,我将简要解释一些与 WPF 和散点图相关的关键概念,并指导您完成 LC .NET 工具的安装。 我建议仔细遵循每个步骤以确保顺利的体验。

什么是 LightningChart 的 WPF 图表?

LightningChart 的 WPF 图表(称为 LightningChart for WPF)是一款功能强大的数据可视化工具,专为 Microsoft Windows Presentation Foundation (WPF) 设计。这些WPF 图表(通常称为 WPF 图表)可以轻松集成到您的 Microsoft Visual Studio 工具箱中。

您可以使用拖放、XAML 或代码隐藏将它们添加到您的软件项目中。添加后,WPF 图形将成为 Windows 桌面应用程序中用户界面 (UI) 的关键部分,使其成为软件开发人员的宝贵工具。

什么是 WPF?

Windows Presentation Foundation (WPF) 是一个用于创建具有复杂用户界面的应用程序的框架。它由两个主要组件组成:标记(用于定义结构和外观)和代码隐藏(用于管理应用程序的逻辑和行为)。

项目概况

今天我们将使用 LightningChart .NET 中的WPF 散点图创建应用程序。

undefined 


标记

标记使我们能够构建具有各种控件的用户界面,使我们能够非常精确地管理应用程序中的显示结果。此界面开发是使用 XAML(可扩展应用程序标记语言)完成的。虽然它最初看起来像一个 XML 模板,但 XAML 专门用于构建应用程序界面,而不仅仅是在应用程序之间交换数据。

界面的数据、图形和动画可以从外部源文件中提取,也可以通过后台代码动态生成。

<Window

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

Title="Window with Button"

Width="250" Height="100">


  <!-- Add button to window -->

<Button Name="button">Click Me!</Button>


</Window>

一些控件的创建几乎与 HTML 标签的创建相同,而在其他情况下,样式等属性仅限于标签内属性的声明。

后台代码

后台代码是指包含可执行代码的文件,负责读取、生成和处理用户所需的结果。其主要目的之一是将图形界面代码(如 XAML、HTML、CSS 等)与可执行代码分离。这种分离使我们能够将工作分为用户界面设计和底层代码的开发,从而实现更安全、更有条理和更快速的开发。

对于 WPF(Windows Presentation Foundation),我们使用 C# 编程语言。C# 是一种面向对象/组件的语言,非常适合这种方法。Lightning Chart .NET 使用可执行的 C# 代码生成 WPF 项目。在此代码中,您可以使用 LightningChart .NET 自己的工具,如果安装了 LC .NET 框架,则可以轻松导入这些工具。

WPF 散点图

散点图是探索两个不同变量或数据系列之间关系的好方法。与折线图或条形图类似,它们使用 X 轴和 Y 轴显示在二维平面上。主要区别在于散点图中的每个轴都有自己的独立变量。图表上的每个数据点代表一对值,显示这两个变量在笛卡尔平面上的相交位置。为确保所有内容都准确放置,为两个轴创建统一的刻度很重要。散点图用途广泛,可以作为其他类型图表的基础,例如流行的气泡图。

散点图可以具有各种关联模式:

· 线性:两个变量的数据点倾向于具有线性模式。

· 非线性:没有线性模式,并且它们可能在平面内完全分散。

· 负线性:与线性模式相同,但方向相反,呈现下降趋势。

在每种模式中,我们可以有不同程度的相关性,可以是中等相关性,也可以是强相关性。

undefined 

这意味着相关强度越大,每个数据点的离散度或分离度就越小。这些类型的相关性称为皮尔逊线性相关系数 (R)。R 值有助于我们衡量变量之间线性关系的强度和方向。它的范围从 +1 到 -1,其中 +1 表示完全正相关,-1 表示完全负相关,0 表示完全无相关

undefined 

本地设置

对于这个项目,我们需要考虑以下要求来编译项目。

1. 操作系统:32位或64位Windows Vista或更高版本,Windows Server 2008 R2或更高版本。

2. DirectX:9.0c(Shader model 3 及更高版本)或 11.0 兼容图形适配器。

3. Visual Studio:2010-2019 用于开发,不需要部署。

4. 平台.NET Framework:安装 4.0 或更新版本。

现在转到下一个 URL 并下载 LightningChart .NET。然后,您将被重定向到登录表单,您必须在其中完成一个简单的注册过程才能访问您的 LightningChart 帐户。

undefined 

登录帐户后,您可以下载 SDK“免费试用”版本,该版本允许您使用此WPF 散点图教程的重要功能。下载 SDK 后,您将获得一个如下所示的 .exe 文件:

undefined 

安装将是典型的 Windows 过程,因此请继续进行,直到完成。安装完成后,您将看到以下程序:

undefined 

许可证管理器

在此应用程序中,您将看到购买选项。您将使用此试用 SDK 创建的所有项目都将在启用所有功能的情况下用于未来开发。

undefined 

LightningChart .NET 交互式示例

您可以看到 100 多个针对 WPF、WinForms 和/或 UWP 的交互式可视化效果。

undefined 

Visual Studio 项目

LightningChart 可视化工具与 Visual Studio 的主要区别在于,我们可以在源代码中分析和试验许多功能。在 LC 可视化工具中,选择“wpf 散点图”示例并运行它: 

undefined 

在窗口的右上角,您将看到以下选项:

undefined 

SDK 试用版允许我们使用 WPF 框架。选择正确的框架后,我们需要指定一个文件夹来创建 WPF 散点图项目:

undefined 

创建项目后,Visual Studio 将打开并准备执行。

undefined 

XAML 代码审查

XAML 代码将包装在MainWindow.xaml.cs中,并包含 WPF 散点图的代码。

undefined 

在代码中,我们将检查两种方法来创建正确绘制 WPF 散点图所需的属性。交互式示例使用各种用户控件构建,以操作和更改图表的视觉属性。这些控件不是生成此图所必需的,因此我们将重点介绍负责生成对象的代码。

创建图表()

此方法将负责配置我们的图表,添加轴、组、颜色等。我们将创建我们的图表:

// Create a new chart.

_chart = new LightningChart

{

    ChartName = "Scatter chart"

};


//Disable rendering, strongly recommended before updating chart properties

_chart.BeginUpdate();

BeginUpdate函数将允许我们停止绘制 WPF 散点图,这将允许我们设置想要自定义的属性。如果需要,我们可以在图表中显示图例框:

_chart.ViewXY.LegendBoxes[0].Visible = true;

undefined 

如果值为 false,则框将被隐藏。不需要实时滚动模式,因此建议在此处禁用它以使LotsOfDots优化生效:

_chart.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode.None;

现在我们将创建一个新的系列,其中将在循环中针对我们在seriesCount变量中指定的系列号执行以下过程:

int seriesCount = 1;

for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++)

{

    FreeformPointLineSeries series = new FreeformPointLineSeries(_chart.ViewXY, _chart.ViewXY.XAxes[0], _chart.ViewXY.YAxes[0])

    {

        LineVisible = false,

        PointsVisible = true

    };

我们使用FreeformPointLineSeries,这是一个多功能工具,可以显示一条简单的线、点(如散点图中的点)或两者结合成一条点线。此系列允许您从上一个点向任意方向绘制一条线。此外,来自 的所有格式选项PointLineSeries也适用于此处。

要将系列添加到图表中,只需将FreeformPointLineSeries对象添加到FreeformPointLineSeries列表中即可。需要注意的是,FreeformPointLineseries即使您已DropOldSeriesData启用,列表中的点也不会自动删除,并且这些点会移出视图。

对于 WPF 散点图中的实时监控,如果要自动删除旧的系列点,可以使用点数限制器。只需设置PointCountLimitEnabled为 true 并使用属性定义最大点数PointCountLimit。当此限制器处于活动状态时,Points一旦达到限制,数组就会像环形缓冲区一样运行,最旧的点始终可用OldestPointIndex。

现在让我们配置点属性:

series.PointStyle.Color1 = DefaultColors.SeriesForBlackBackgroundWpf[seriesIndex % DefaultColors.SeriesForBlackBackgroundWpf.Length];

series.PointStyle.Width = 1;

series.PointStyle.Height = 1;

series.PointStyle.Shape = Arction.Wpf.Charting.Shape.Rectangle;

series.PointStyle.GradientFill = GradientFillPoint.Solid;

series.PointStyle.BorderWidth = 0;

series.AllowUserInteraction = false;

series.PointsOptimization = GetOptimizationFromSelection();

_chart.ViewXY.FreeformPointLineSeries.Add(series);

PointsOptimization:为了高效显示大量散点,请设置PointsOptimization = Pixels。这会将点渲染为 1×1 像素,这可以显著提高性能,尤其是在处理数百万个点时。对于较小的数据集,比如最多 10,000 个点,像素绝对更快。请记住,虽然LotsOfPixels可以快速处理大量数据,但它会将所有点渲染在一个平面层中。如果同一位置有多个半透明点,则不会保留它们各自的 alpha 混合。但是,如果 alpha = 255,输出看起来几乎相同。

private PointsRenderOptimization GetOptimizationFromSelection()

{

    if (comboBoxOptimization.SelectedIndex == 0)

    {

        return PointsRenderOptimization.None;

    }

    else if (comboBoxOptimization.SelectedIndex == 1)

    {

        return PointsRenderOptimization.Pixels;

    }

    else

    {

        return PointsRenderOptimization.LotsOfPixels;

    }

undefined 

轴设置

要访问 X 轴,我们只需从 XAxes 列表中选择索引零。由于我们仅使用具有单个 X 轴的图表,因此默认情况下会将其分配给索引零:

_chart.ViewXY.XAxes[0].ValueType = AxisValueType.Number;

_chart.ViewXY.XAxes[0].SetRange(-1000, 1000);

_chart.ViewXY.YAxes[0].SetRange(-1000, 1000);

 

WPF 散点图中,范围是从 -1000 到 1000,Y 轴的范围相同。

_chart.EndUpdate();


gridChart.Children.Add(_chart);

一旦我们完成图表配置,我们就关闭EndUpdate()更新过程,并将图表对象添加到我们的 XAML 网格中以便显示它。

AxisY axisY = _chart.ViewXY.YAxes[0];

axisY.SetRange(40, 100);

axisY.Title.Text = "Weight (kg)";

Y 轴配置更简单,因为我们只需要显示每个对象的垂直值。Y 轴的焦点将设置在 40 和 100 之间,这是我们的框的最小值和最大值。

_chart.EndUpdate();


gridChart.Children.Add(_chart);

完成图表配置,就关闭EndUpdate()更新过程,并将图表对象添加到我们的 XAML 网格中以便显示它。

添加点数

此方法将通过“设置数据”按钮执行。首先,清除启动图表时创建的一系列点。将使用输入的值作为限制来执行循环。

undefined 

foreach (FreeformPointLineSeries freeformPointLineSeries in _chart.ViewXY.FreeformPointLineSeries)

{

    freeformPointLineSeries.Clear();


    points = new SeriesPoint[pointsCount];


    for (int i = 0; i < pointsCount; i++)

    {

        randomX = (random.NextDouble() - 0.5) * 20.0;

        randomY = (random.NextDouble() - 0.5) * 20.0;


        // Raised to pow 3, max = 1000.

        points[i].X = randomX * randomX * randomX;

        points[i].Y = randomY * randomY * randomY;

    }


    freeformPointLineSeries.Points = points;

循环将为每个变量创建一个数据点,最后将生成的数组添加到freeformPointLineSeries。


结论

要创建此 WPF 散点图,必须使用专注于散点图的 FreeformPointLineSeries 类。此类还允许我们创建 3D 图表,稍后我们将介绍。这种类型的图表可能是最容易创建的图表之一,如果您开始使用 Lightning Chart .Net,这非常好。如果仔细观察,LC .NET 要求我们配置对象,为轴分配属性并创建与我们需要的图表相关的类型的系列。

WPF 散点图最复杂的编程是生成数据并将其存储在具有系列所需格式的数组中。LC .NET 和 WPF 的优势在于能够使用用户界面控件。最后,这些控件的唯一目的是生成一个参数,该参数将用于计算我们的数据。我们必须记住使用 BeginUpdate 和 EndUpdate 函数,这将使我们能够工作和更新图表,停止正在进行的所有进程。

就这么多啦,非常感谢您的关注!


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508