我使用.net Charting生成一个箱形图。我能画出方框和中线。我甚至还有胡须工作。
我使用以下方法生成ElementCollection
:
ElementCollection GetElements(IDictionary<int, IList<double>> series)
{
ElementCollection elements = new ElementCollection();
foreach (int visitnr in series.Keys)
{
double perc25 = GetPercentile3(0.25, series[visitnr]);
double perc50 = GetPercentile3(0.50, series[visitnr]);
double perc75 = GetPercentile3(0.75, series[visitnr]);
Element e = new Element();
e.Name = visitnr.ToString();
e.YValue = perc75;
e.YValueStart = perc25;
// median
SubValue sv = SubValue.FromValue(perc50);
sv.Line.Width = 2;
sv.Line.Length = 21;
sv.Type = SubValueType.Line;
e.SubValues.Add(sv);
// whiskers
double maxWhiskerOffset = (perc75 - perc25) * 1.5;
if (perc25 - maxWhiskerOffset < series[visitnr][0])
e.ErrorLowValue = series[visitnr][0];
else
e.ErrorLowValue = perc25 - maxWhiskerOffset;
if (perc75 + maxWhiskerOffset > series[visitnr][series[visitnr].Count - 1])
e.ErrorHighValue = series[visitnr][series[visitnr].Count - 1];
else
e.ErrorHighValue = perc75 + maxWhiskerOffset;
elements.Add(e);
}
return elements;
}
我不知道的是:如何添加极值?我需要显示不在wiskers区域内的值。线条或点,无论什么作品。我试图通过其他元素来做到这一点,但这不起作用。有什么想法吗?
答案 0 :(得分:0)
您需要添加子值并为其指定某种类型:
SubValue ev = SubValue.FromValue(v);
ev.Type = SubValueType.Marker;
e.SubValues.Add(ev);