提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-12-02 11:20:36.680|阅读 9 次
概述:本文将为大家介绍如何用图表控件LightningChart .NET实现散点图,欢迎联系我们获取新产品试用!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
LightningChart .NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。
在上文中(点击这里回顾>>),我们介绍了WPF 散点图、项目的一些基本概况等,本文讲继续介绍如何具体实现WPF散点图。
LightningChart可视化工具与 Visual Studio 的主要区别在于,我们可以在源代码中分析和试验许多功能。在 LC可视化工具中,选择 “wpf scatter chart”示例并运行它:
在窗口的右上角,您将看到以下选项:
SDK 试用版允许我们使用 WPF 框架,选择正确的框架后,需要指定一个文件夹来创建 WPF 散点图项目:
创建项目后,Visual Studio 将打开并准备执行。
主 XAML 代码将封装在MainWindow.xaml.cs中,并包含 WPF 散点图的代码。
在代码中,我们将检查两种方法来创建正确绘制 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;
如果值为 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; } }
要访问 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 网格中以便显示它。
此方法将通过 “Set Data” 按钮执行。首先,清除启动图表时创建的一系列点,将使用输入的值作为限制来执行循环。
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 图表,稍后我们将介绍。这种类型的图表可能是最容易创建的图表之一,如果您开始使用LightningChart .NET,这非常好。如果仔细观察,LC .NET 要求配置对象,为轴分配属性并创建与我们需要的图表相关的类型的系列。
此 WPF散点图最复杂的编程是生成数据并将其存储在具有系列所需格式的数组中,LightningChart .NET 和 WPF 的优势在于能够使用用户界面控件。最后这些控件的唯一目的是生成一个参数,该参数将用于计算我们的数据。必须记住使用 BeginUpdate 和 EndUpdate 函数,这将使我们能够工作和更新图表,停止正在进行的所有进程。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢