翻譯|使用教程|編輯:楊鵬連|2021-06-28 10:51:47.910|閱讀 201 次
概述:本文主要介紹了高性能圖表控件LightningChart關于方形散點圖的問題解答。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
LightningChart.NET完全由GPU加速,并且性能經過優化,可用于實時顯示海量數據——超過10億個數據點。LightningChart包括廣泛的2D、高級3D、Polar、Smith、3D餅/甜甜圈、地理地圖和GIS圖表以及適用于科學、工程、醫學、航空、貿易、能源和其他領域的體位功能。
LightningChart.NET重加入在線訂購,SignalTools,12個月,WPF版本原價405元,現價3499元,現在搶購立享優惠!立即購買>>
點擊下載LightningChart.NET最新試用版 LightningChart JS最新試用版
Q:方形散點圖的問題
我們的軟件需要一個散點圖,其中有一個完美的方形圖表區域,每個軸上的值都相同,并且有一個圓形陰影區域。
為此,我使用 FreeformPoint 系列,強制圖表的寬度等于圖表的高度,并將 ViewXY 的 ManualAspectRatioWH 設置為 1。要創建陰影區域,我使用 0,0 處的 SeriesPoint 并將 PointShapeStyle 設置為所需大小和厚度的圓。為了獲得這個圓的正確大小,我使用了一個系數值(圖表區域高度除以軸范圍)。這給了我幾乎完美的結果,但也存在問題。
您可以在屏幕截圖中看到陰影區域似乎偏離中心,x 軸上 -150 之前的空白區域比 150 之后的多。 y 軸也存在類似的問題。
在逐字計算像素后,我發現網格線不均勻。兩個“行”在高度上是一個額外的像素,而一列在寬度上是一個額外的像素(我在圖片中用紅線標記了有問題的行和列)。圖表也比它高兩個像素寬。這會導致陰影區域的大小和厚度不正確。準確性對我們的軟件至關重要,因此我必須確保將所有圖表元素繪制在正確的位置并具有正確的大小。
是否有可能在沒有這些不一致的情況下創建一個完美的方形圖表區域?
您還知道在 Lightning Chart 中實現圓形陰影區域的更好方法嗎?該區域的大小和厚度必須與軸相關聯,因此它們會在縮放時調整大小。當前系數方法是以前的圖表包中唯一可能的方法,因此現在已沿用。我知道這是一個相當不標準的圖表,但我感謝您的幫助。
我們目前正在使用 v.8.3.1_20180404
A:這個問題很可能是由于 LightningChart 無法平均劃分可用的圖形大小(以像素為單位)。圖表具有一定的像素大小,圖形區域(由邊距限制的區域,其中顯示數據)也是如此。您實際上可以通過調用 _chart.ActualWidth 和 _chart.ViewXY.XAxes[0].GetActiveAxisArea().Width 來檢查這些的確切大小。請注意,這些僅在圖表呈現后才起作用。
如果您的圖形區域具有例如 700 的高度,并且您嘗試將其劃分為由網格線分隔的 12 個段(它們也是 1 個像素寬,總共 13 個,一個在頂部,一個在底部),您將擁有這種問題。這些段最終具有 57,25 像素的高度。由于無法呈現部分像素,圖表最終具有像 57、57、57、58、57...
要解決此問題,您可以嘗試修改圖表大小和圖形區域大小,后者可以通過更改邊距設置來完成。
_chart.Width = 700; _chart.Height = 700; _chart.ViewXY.AxisLayout.AutoAdjustMargins = false; _chart.ViewXY.Margins = new Thickness(40, 20, 10, 40);
在這種情況下,AspectRatio 通常是最佳選擇。您還可以仔細檢查它是否設置正確。我們有幾個使用它的演示示例:WinForms 端的“強度網格、圓/極幾何”、“圖像查看器”和“硅晶片圖分析”。
圓形區域的創建方式可能不會對問題本身產生任何影響,但您也可以使用 Annotation 或 EventMarker(Chart 或 SeriesEventMarker)創建它。標記具有 Offset 屬性的好處,可用于以像素為單位調整它們的位置。
始終可以選擇在 support(at)arction.com 上向我們的技術支持發送示例應用程序,我們可以查看該問題(盡管您需要有效訂閱才能獲得更多技術支持)。
Q:如果我理解正確,您是說網格線不是覆蓋在圖表上,而是實際上增加了高度和寬度?那么一個有 12 個線段和網格線的圖表,會比沒有網格線的同一個圖表高 13 個像素嗎?
如果是這種情況,那么它肯定可以解釋我在陰影區域看到的問題。
有沒有辦法覆蓋網格線而不是將它們“插入”到高度和寬度中?
我目前正在使用我在另一篇文章中找到的公式計算圖表區域的高度:
_chart.ActualHeight - (_chart.ViewXY.Margins.Top + _chart.ViewXY.Margins.Bottom)
這會給出正確的大小嗎?
我試過使用你建議的變量,而 _chart.ViewXY。XAxes[0].GetActiveAxisArea().Width 和 Height 工作正常,_chart.ViewXY。Y Axes[0].GetActiveAxisArea().Width 和 Height 總是返回零。A:我仔細檢查了我們的源代碼。我可能在這里提供了一些錯誤信息,為此道歉。網格線實際上是重疊的。不過問題還是一樣;圖形區域不能在段之間平均劃分,并且由于四舍五入,某些段比其他段大一個像素。
您使用的計算是正確的,但沒有考慮圍繞圖形繪制的邊界。目前,它在頂部和底部繪制在圖形之外,但不在左側和右側(我們可能需要在未來的版本中修復這個問題,以便在所有方面都相同)。結果是 GetActiveAxisArea 返回的高度值比您使用的公式少 2px。因此 GetActiveAxisArea 可能更可靠。
GetActiveAxisArea 應該適用于兩個軸,但前提是圖表已首先呈現。為了確保這一點,您可以調用 AfterRendering -event 中的方法。
根據我們的數據庫,您的訂閱已過期。為了獲得更多技術支持以及新功能和錯誤修復,請考慮續訂訂閱。
如果有任何疑問,請以獲取更多信息。
如果您對該圖表控件感興趣,歡迎加入圖表控件QQ交流群:740060302
欲購買LightningChart正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: