public InrixCumulativeFreqChart(List <GraphLine> lines, TMCCollection tmcCollection, int binsize, double maxX, double minX) { CreateReliabilityTable(); var extendedDirection = string.Empty; //Set the chart properties ChartFactory.SetImageProperties(chart); chart.ImageStorageMode = ImageStorageMode.UseImageLocation; chart.BorderlineColor = Color.Black; chart.BorderlineWidth = 2; chart.BorderlineDashStyle = ChartDashStyle.Solid; //Set the chart title chart.Titles.Add("Cumulative Frequency Chart"); chart.Titles.Add(""); chart.Titles[1].Font = new Font(chart.Titles[0].Font, FontStyle.Bold); var chartArea = new ChartArea(); chartArea.Name = "ChartArea1"; var chartLegend = new Legend(); chartLegend.Name = "MainLegend"; chartLegend.Docking = Docking.Left; chart.Legends.Add(chartLegend); chartArea.AxisX.Title = "Travel Time (Minutes)"; chartArea.AxisX.Interval = 2; if (maxX > 0) { chartArea.AxisX.Maximum = maxX; } chartArea.AxisX.Minimum = 0; if (minX > 0) { chartArea.AxisX.Minimum = minX; } // chartArea.AxisX.MajorTickMark.Enabled = true; chartArea.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None; chartArea.AxisY.Title = "Cumulative Frequency"; //chartArea.AxisY.IntervalAutoMode = IntervalAutoMode.FixedCount; chartArea.AxisY.Interval = 25; chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot; chartArea.AxisY.Maximum = 100; chartArea.AxisY.Minimum = 0; chart.ChartAreas.Add(chartArea); var i = 0; foreach (var line in lines) { i++; var series = new Series(); series.IsVisibleInLegend = true; series.ChartType = SeriesChartType.Spline; series.Color = line.LineColor; series.BorderWidth = line.LineWidth; //series.MarkerSize = line.LineWidth; series.BorderDashStyle = line.LineStyle; series.Name = @"#" + line.LineNumber + ": " + line.StartDay.ToShortDateString() + " - " + line.EndDay.ToShortDateString() + " from " + line.StartHour + " to " + line.EndHour; series.XValueType = ChartValueType.Int32; var hasSeries = false; foreach (var s in chart.Series) { if (s.Name == series.Name) { hasSeries = true; } } if (!hasSeries) { chart.Series.Add(series); } AddDataToCFChart(line, tmcCollection, binsize, series.Name, line.LineNumber); } }
private void AddDataToCFChart(GraphLine line, TMCCollection tmccollection, int binsize, string seriesname, int rangeID) { //DataPointComparer comparer = new DataPointComparer(); //TextWriter tw = new StreamWriter(@"c:\array.txt"); tmccollection.RankedTravelTimes.Clear(); tmccollection.BadTMCs.Clear(); tmccollection.CalculateTravelTimes(line.StartDay, line.EndDay, line.StartHour, line.EndHour, line.Confidence, line.DayTypes, binsize, ref InrixReliabilityDT, rangeID); if ((tmccollection.BadTMCs.Count > 0) & (chart.Titles.Count < 3)) { var badTMCtitle = new Title(); badTMCtitle.Text = "One or more links are missing data."; badTMCtitle.ForeColor = Color.Red; badTMCtitle.IsDockedInsideChartArea = true; badTMCtitle.Docking = Docking.Bottom; chart.Titles.Add(badTMCtitle); //chart.Titles.Add("One or more TMC have no data."); //chart.Titles[2].ForeColor = Color.Red; //chart.Titles[2].IsDockedInsideChartArea = true; //chart.Titles[2].Docking = Docking.Bottom; } foreach (var pair in tmccollection.RankedTravelTimes) { chart.Series[seriesname].Points.AddXY(Math.Round(pair.Value, 2), pair.Key); } //if (pair.Value >= x) //{ // x = pair.Value; //} //else //{ // int w = 1; //} //if (pair.Key >= y) //{ // y = pair.Key; //} //else //{ // int w = 1; //} //foreach (DataPoint point in chart.Series[seriesname].Points) //{ // if (point.YValues.Count() > 1) // { // foreach (double d in point.YValues) // { // tw.WriteLine(point.XValue.ToString() + "," + d); // tw.Flush(); // } // } //} }