簡體   English   中英

IsXValueIndexed導致圖形線條無法繪制

[英]IsXValueIndexed causing graph lines to not draw

因此,有一個包含2個圖表區域和3個系列的圖表。 頂部圖表區域有2個系列。 第一個系列顯示一段時間內的價格,第二個系列的頂部圖表區域顯示同一時間的每股收益

底部圖表區域有1個系列,並且同時顯示了音量。

所有3個系列的積分都相同。 所有3個系列的XValueType都設置為Date。

當數據為每日股價時,周末會有缺口,並且希望抑制。 因此,應該這樣做是將IsXValueIndexed設置為true。 如果執行此操作,則圖表將呈現,但是在成交量圖的價格圖中,沒有任何一條線顯示。

我的理解是,要使IsXValueIndexed起作用,每個序列必須具有相同數量的點,並且所有序列在X軸上的同一點都具有相同的日期。 他們是這樣。

我還能缺少什么?

您描述的效果的唯一解釋是您已經設置了x軸的Maximum&Minimum值。

MSDN:

Series.IsXValueIndexed

獲取或設置一個標志,該標志指示是否將數據點索引用於X值

您已經掌握了其他規則(例如,關於序列比對),但是這個簡單的語句意味着現在忽略實際的x值 它們仍然可以用於格式化標簽以及計算內容(請參閱下文!),但是當涉及沿軸的數據點布局時,它們全部被索引0,1,2..代替0,1,2..

因此,您為XAxis.Minimum&Maximum設置的任何值將不再按預期工作:內部點中的DateTimes巨大的雙倍; 除非您的日期是從DateTime (0001年1月1日)開始的DateTime開始,否則索引永遠無法到達那里。

您可以通過重置Minimum/Maximum來進行測試:

 Axis ax = someChartArea.AxisX;

 ax.Minimum = double.NaN;
 ax.Maximum = double.NaN;

但是,如果您設置了它們,則可能需要它們。 因此,您可能需要計算要使用的索引; 這是一個例子:

Series s = yourSeries;

var p1 = s.Points.Where(x => x.XValue > ax.Minimum).First();
var p2 = s.Points.Where(x => x.XValue <= ax.Maximum).Last();

ax.Minimum = s.Points.IndexOf(p1);
ax.Maximum = s.Points.IndexOf(p2) + 1;

但是,當涉及到例如分頁時,也許更簡單的方案會做得更好或更好。

我們來看一下:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM