public void MakeParetoChart(AspNetCore.Reporting.Chart.WebForms.Chart chart, string srcSeriesName, string destSeriesName) { string chartArea = chart.Series[srcSeriesName].ChartArea; chart.Series[srcSeriesName].ChartType = SeriesChartType.Column; chart.DataManipulator.Sort(PointsSortOrder.Descending, srcSeriesName); double num = 0.0; foreach (DataPoint point in chart.Series[srcSeriesName].Points) { if (!point.Empty && !double.IsNaN(point.YValues[0])) { num += point.YValues[0]; } } chart.ChartAreas[chartArea].AxisY.Maximum = num; Series series = new Series(destSeriesName); chart.Series.Add(series); series.ChartType = SeriesChartType.Line; series.ChartArea = chart.Series[srcSeriesName].ChartArea; if (chart.Series[srcSeriesName].Points.Count > 0) { series.BorderWidth = chart.Series[srcSeriesName].Points[0].BorderWidth; } series.Font = chart.Series[srcSeriesName].Font; series.FontAngle = chart.Series[srcSeriesName].FontAngle; series.FontColor = chart.Series[srcSeriesName].FontColor; series.Legend = chart.Series[srcSeriesName].Legend; series.YAxisType = AxisType.Secondary; chart.ChartAreas[chartArea].AxisY2.Maximum = 1.0; chart.ChartAreas[chartArea].AxisY2.LabelStyle.Format = "P0"; double num2 = 0.0; foreach (DataPoint point2 in chart.Series[srcSeriesName].Points) { num2 += point2.YValues[0] / num; series.Points.Add(Math.Round(num2, 2)); } }
public CollectedPieHelper(AspNetCore.Reporting.Chart.WebForms.Chart chartControl) { this.chartControl = chartControl; this.chartControl.PostPaint += this.chart_PostPaint; }
public void CreateHistogram(AspNetCore.Reporting.Chart.WebForms.Chart chartControl, string dataSeriesName, string histogramSeriesName, string histogramLegendText) { if (chartControl == null) { throw new ArgumentNullException("chartControl"); } int index = chartControl.Series.GetIndex(dataSeriesName); if (index < 0) { throw new ArgumentException("Series with name'" + dataSeriesName + "' was not found.", "dataSeriesName"); } Series series = chartControl.Series[dataSeriesName]; Series series2 = null; if (chartControl.Series.GetIndex(histogramSeriesName) < 0) { series2 = new Series(histogramSeriesName); chartControl.Series.Insert(index, series2); series2.ChartType = series.ChartType; series2.LegendText = histogramLegendText; if (series.Points.Count > 0) { series2.BorderColor = series.Points[0].BorderColor; series2.BorderWidth = series.Points[0].BorderWidth; series2.BorderStyle = series.Points[0].BorderStyle; } series2.Color = series.Color; series2.BackGradientEndColor = series.BackGradientEndColor; series2.BackGradientType = series.BackGradientType; series2.Legend = series.Legend; series2.ChartArea = series.ChartArea; DataPointAttributes dataPointAttributes = series; int num = 0; while (num < series.Points.Count) { if (series.Points[num].Empty) { num++; continue; } dataPointAttributes = series.Points[num]; break; } series2.LabelBackColor = dataPointAttributes.LabelBackColor; series2.LabelBorderColor = dataPointAttributes.LabelBorderColor; series2.LabelBorderWidth = dataPointAttributes.LabelBorderWidth; series2.LabelBorderStyle = dataPointAttributes.LabelBorderStyle; series2.LabelFormat = dataPointAttributes.LabelFormat; series2.ShowLabelAsValue = dataPointAttributes.ShowLabelAsValue; series2.Font = dataPointAttributes.Font; series2.FontColor = dataPointAttributes.FontColor; series2.FontAngle = dataPointAttributes.FontAngle; } double num2 = 1.7976931348623157E+308; double num3 = -1.7976931348623157E+308; int num4 = 0; foreach (DataPoint point in series.Points) { if (!point.Empty) { if (point.YValues[0] > num3) { num3 = point.YValues[0]; } if (point.YValues[0] < num2) { num2 = point.YValues[0]; } num4++; } } if (this.SegmentIntervalWidth == 0.0) { this.SegmentIntervalWidth = (num3 - num2) / (double)this.SegmentIntervalNumber; this.SegmentIntervalWidth = this.RoundInterval(this.SegmentIntervalWidth); } num2 = Math.Floor(num2 / this.SegmentIntervalWidth) * this.SegmentIntervalWidth; num3 = Math.Ceiling(num3 / this.SegmentIntervalWidth) * this.SegmentIntervalWidth; double num5 = num2; for (num5 = num2; num5 <= num3; num5 += this.SegmentIntervalWidth) { int num6 = 0; foreach (DataPoint point2 in series.Points) { if (!point2.Empty) { double num7 = num5 + this.SegmentIntervalWidth; if (point2.YValues[0] >= num5 && point2.YValues[0] < num7) { num6++; } else if (num7 >= num3 && point2.YValues[0] >= num5 && point2.YValues[0] <= num7) { num6++; } } } series2.Points.AddXY(num5 + this.SegmentIntervalWidth / 2.0, (double)num6); } ((DataPointAttributes)series2)["PointWidth"] = "1"; ChartArea chartArea = chartControl.ChartAreas[series2.ChartArea]; chartArea.AxisY.Title = "Frequency"; chartArea.AxisX.Minimum = num2; chartArea.AxisX.Maximum = num3; double num8 = this.SegmentIntervalWidth; bool flag = false; while ((num3 - num2) / num8 > 10.0) { num8 *= 2.0; flag = true; } chartArea.AxisX.Interval = num8; if (chartArea.AxisX.LabelStyle.ShowEndLabels && flag) { chartArea.AxisX.Maximum = num2 + Math.Ceiling((num3 - num2) / num8) * num8; } chartControl.Series.Remove(series); chartArea.AxisY2.Enabled = AxisEnabled.Auto; if (this.ShowPercentOnSecondaryYAxis) { chartArea.Recalculate(); chartArea.AxisY2.Enabled = AxisEnabled.True; chartArea.AxisY2.LabelStyle.Format = "P0"; chartArea.AxisY2.MajorGrid.Enabled = false; chartArea.AxisY2.Title = "Percent of Total"; chartArea.AxisY2.Minimum = chartArea.AxisY.Minimum / (double)num4; chartArea.AxisY2.Maximum = chartArea.AxisY.Maximum / (double)num4; double num9 = (chartArea.AxisY2.Maximum > 0.2) ? 0.05 : 0.01; chartArea.AxisY2.Interval = Math.Ceiling(chartArea.AxisY2.Maximum / 5.0 / num9) * num9; } }