翻譯|使用教程|編輯:龔雪|2024-12-02 11:20:36.680|閱讀 106 次
概述:本文將為大家介紹如何用圖表控件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@fc6vip.cn
文章轉載自:慧都網