private void InitGraph( string title, string xAxisTitle, string y1AxisTitle, string y2AxisTitle, SummaryDataSource[] dataSourceArray) { _graphPane = zed.GraphPane; _graphPane.Title.Text = title; _graphPane.XAxis.Title.Text = xAxisTitle; _graphPane.XAxis.MajorGrid.IsVisible = true; _graphPane.YAxis.Title.Text = y1AxisTitle; _graphPane.YAxis.MajorGrid.IsVisible = true; _graphPane.Y2Axis.Title.Text = y2AxisTitle; _graphPane.Y2Axis.MajorGrid.IsVisible = false; // Create point-pair lists and bind them to the graph control. int sourceCount = dataSourceArray.Length; _pointPlotArray = new PointPairList[sourceCount]; for (int i = 0; i < sourceCount; i++) { SummaryDataSource ds = dataSourceArray[i]; _pointPlotArray[i] = new PointPairList(); Color color = _plotColorArr[i % 3]; BarItem barItem = _graphPane.AddBar(ds.Name, _pointPlotArray[i], color); barItem.Bar.Fill = new Fill(color); _graphPane.BarSettings.MinClusterGap = 0; barItem.IsY2Axis = (ds.YAxis == 1); } }
/// <summary> /// Refresh view. /// </summary> public void RefreshView() { if (this.InvokeRequired) { // Note. Must use Invoke(). BeginInvoke() will execute asynchronously and the evolution algorithm therefore // may have moved on and will be in an intermediate and indeterminate (between generations) state. this.Invoke(new MethodInvoker(delegate() { RefreshView(); })); return; } if (this.IsDisposed) { return; } // Update plot points for each series in turn. int sourceCount = _dataSourceArray.Length; for (int i = 0; i < sourceCount; i++) { SummaryDataSource ds = _dataSourceArray[i]; Point2DDouble[] pointArr = ds.GetPointArray(); PointPairList ppl = _pointPlotArray[i]; EnsurePointPairListLength(ppl, pointArr.Length); for (int j = 0; j < pointArr.Length; j++) { ppl[j].X = pointArr[j].X; ppl[j].Y = pointArr[j].Y; } } // Trigger graph to redraw. zed.AxisChange(); Refresh(); }