我需要一些图表来展示我们客户的发展。因为当年的数据还在变化,我也想“突出”当年的地区。
因为图片胜过 1.000 字:
这是我目前的图表:
它应该是这样的:
(我知道 2012 年不是当年,这些只是一些样本数据;))
不幸的是,zedGraphs boxObj 确实困扰着我,我无法让它以任何方式工作。
到目前为止,这是我的图形代码:
graphControl.GraphPane.CurveList.Clear();
graphControl.GraphPane.Title.Text = "Umsatz-Jahresvergleich von " + kunde.Name;
graphControl.GraphPane.XAxis.Title.Text = "Jahr";
graphControl.GraphPane.YAxis.Title.Text = "Umsatz in €";
ArrayList arrYears = new ArrayList();
List<String> lstYearStrings = new List<string>();
double[] xValue2 = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
ArrayList arrActYear = new ArrayList();
foreach (KeyValuePair<int, Jahresumsatz> kvp in kunde.Umsaetze.OrderBy(key => key.Key))
{
arrYears.Add(kvp.Value.UmsatzNetto);
lstYearStrings.Add(kvp.Value.Jahr.ToString());
}
graphControl.GraphPane.XAxis.Scale.TextLabels = lstYearStrings.ToArray();
graphControl.GraphPane.XAxis.Type = AxisType.Text;
graphControl.GraphPane.XAxis.Scale.FontSpec.Angle = 90;
LineItem curve = graphControl.GraphPane.AddCurve("Umsatz im Jahresvergleich", xValue2, (double[])arrYears.ToArray(typeof(double)), Color.Red, SymbolType.Circle);
curve.Line.Fill = new Fill(Color.White, Color.FromArgb(160, 230, 145, 205), 90F);
curve.Symbol.Fill = new Fill(Color.Red);
/* One of my many experiments with BoxObj... it's not working of cause :(
BoxObj box = new BoxObj(0.5, 0.5, 40, 40, Color.Empty,Color.FromArgb(150, Color.LightGreen));
box.Fill = new Fill(Color.White, Color.FromArgb(200, Color.LightGreen), 45.0F);
box.ZOrder = ZOrder.E_BehindCurves;
box.IsClippedToChartRect = true;
box.Location.CoordinateFrame = CoordType.AxisXYScale;*/
graphControl.GraphPane.GraphObjList.Add(box);
graphControl.GraphPane.AxisChange();
graphControl.Refresh();
如果有人能帮我解决这个问题,那就太好了。
顺便说一句,BoxObj 需要在某种程度上是动态的,因此它与图表成比例,并且如果选择的年份不同,它仍然适合。
提前谢谢了