彩票走势图

「实战应用」如何用图表控件LightningChart .NET实现散点图?(二)

翻译|使用教程|编辑:龚雪|2024-12-02 11:20:36.680|阅读 9 次

概述:本文将为大家介绍如何用图表控件LightningChart .NET实现散点图,欢迎联系我们获取新产品试用!

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

LightningChart .NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。

在上文中(点击这里回顾>>),我们介绍了WPF 散点图、项目的一些基本概况等,本文讲继续介绍如何具体实现WPF散点图。

Visual Studio 项目

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

如何用图表控件LightningChart .NET实现散点图?

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

如何用图表控件LightningChart .NET实现散点图?

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

如何用图表控件LightningChart .NET实现散点图?

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

如何用图表控件LightningChart .NET实现散点图?
XAML代码审查

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

如何用图表控件LightningChart .NET实现散点图?

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

CreateChart()

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

// 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;

如何用图表控件LightningChart .NET实现散点图?

如果值为 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;
}
}

如何用图表控件LightningChart .NET实现散点图?
轴设置

要访问 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” 按钮执行。首先,清除启动图表时创建的一系列点,将使用输入的值作为限制来执行循环。

如何用图表控件LightningChart .NET实现散点图?

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

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP