public override void ConfigureSeriesType(MSCHART.Chart chart) { foreach (var ser in chart.Series) { ser.ChartType = GetSeriesChartType(); } }
public override void ConfigureXYGrid(MSCHART.Chart chart) { // Set Axis Colors foreach (var axis in chart.ChartAreas[0].Axes) { axis.LineColor = this.ChartFormat.XYChartAxisLineColor; axis.MajorGrid.LineColor = this.ChartFormat.XYChartMajorGridLineColor; axis.IsMarginVisible = this.ShowAxisMargin; axis.MajorTickMark.Enabled = false; axis.MajorTickMark.LineColor = this.ChartFormat.XYChartMajorGridLineColor; } var xaxis = chart.ChartAreas[0].AxisX; var yaxis = chart.ChartAreas[0].AxisY; // Configure if lines show up for each major value on the X axis xaxis.MajorGrid.Enabled = this.ShowXAxisLines; // If needed turn the y axis line off by setting its width to zero if (!this.ChartFormat.YAxisLineVisible) { yaxis.LineWidth = 0; } // Configure Tick Marks on the X & Y Axis yaxis.MajorTickMark.Enabled = this.YAxisTickMarks; xaxis.MajorTickMark.Enabled = this.XAxisTickMarks; // Configure the Maximum Value used for the Y Axis if (this.MaximumValue.HasValue) { chart.ChartAreas[0].AxisY.Maximum = this.MaximumValue.Value; } }
public override void ConfigureColors(MSCHART.Chart chart) { int i = 0; foreach (var series in chart.Series) { if (this.ChartFormat.ColorStyle == ColorStyle.FlatColor) { series.Color = this.ChartFormat.Palette.GetBaseColor(i); } else { if (this.BarStyle == BarStyle.Horizontal) { series.Color = this.ChartFormat.Palette.GetDarkColor(i); series.BackGradientStyle = MSCHART.GradientStyle.LeftRight; series.BackSecondaryColor = this.ChartFormat.Palette.GetBaseColor(i); } else { series.Color = this.ChartFormat.Palette.GetBaseColor(i); series.BackGradientStyle = MSCHART.GradientStyle.TopBottom; series.BackSecondaryColor = this.ChartFormat.Palette.GetDarkColor(i); } } i++; } }
private void DataBindChart(DV.Chart chart) { // NOTE: WebForms chart will throw null refs if optional values are set to null if (_dataSource != null) { if (!String.IsNullOrEmpty(_dataSource.GroupByField)) { chart.DataBindCrossTable( _dataSource.DataSource, _dataSource.GroupByField, _dataSource.XField ?? String.Empty, _dataSource.YFields, _dataSource.OtherFields ?? String.Empty, _dataSource.PointSortOrder); } else if (_dataSource.DataBindTable) { chart.DataBindTable( _dataSource.DataSource, _dataSource.XField ?? String.Empty); } else { Debug.Assert(false, "Chart.DataBind was removed - should not reach here"); //chart.DataSource = _dataSource.DataSource; //chart.DataBind(); } } }
public static System.Web.UI.DataVisualization.Charting.Chart AddVertLines(System.Web.UI.DataVisualization.Charting.Chart chart, DataTable dt_vertlines , string line_x_var, string line_text_var, string line_xtype) { chart = AddVertLines(chart, dt_vertlines , line_x_var, line_text_var, line_xtype, -999, -999, -999, -999); return(chart); }
private void UpdateCbbyClassNumber(int intNClasses) { if (arrProV == null || arrSortedProV == null) { return; } System.Web.UI.DataVisualization.Charting.Chart pChart = new System.Web.UI.DataVisualization.Charting.Chart(); dblpValue = new double[intNClasses - 1]; intResultIdx = new int[intNClasses - 1]; for (int i = 0; i < intNClasses - 1; i++) { intResultIdx[i] = System.Array.IndexOf(arrProV, arrSortedProV[i]); } System.Array.Sort(intResultIdx); cb = new double[intNClasses + 1]; cb[0] = arrEst.Min(); cb[intNClasses] = arrEst.Max(); for (int i = 0; i < intNClasses - 1; i++) { cb[i + 1] = arrEst[intResultIdx[i]]; dblpValue[i] = pChart.DataManipulator.Statistics.NormalDistribution(arrResults[intResultIdx[i]]); } }
static Chart CreateChart(DateTime startDate, DateTime endDate, int mode) { System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 800; Chart2.Height = 300; Chart2.RenderType = RenderType.ImageTag; Chart2.Palette = ChartColorPalette.BrightPastel; Chart2.ChartAreas.Add("Series 1"); Chart2.Legends.Add("Legend 1"); List <UsageDataPoint> diagramData = GetUsageData(startDate, endDate, mode); var versions = diagramData.Select(d => d.Version).Distinct().OrderBy(v => v, new UsageDataAnalysisWebClient.Repositories.VersionNameComparer()).ToList(); var allDates = diagramData.Select(d => d.Date).Distinct().OrderBy(d => d).ToList(); foreach (var version in versions) { var s = Chart2.Series.Add(version); s.ChartType = SeriesChartType.StackedArea; var dict = diagramData.Where(d => d.Version == version).ToDictionary(d => d.Date, d => d.UserCount); foreach (var date in allDates) { int count; dict.TryGetValue(date, out count); // add a half week so that the data points are in the middle of the week s.Points.AddXY(date + (mode == 2 ? TimeSpan.FromDays(15) : mode == 1 ? TimeSpan.FromDays(3.5) : TimeSpan.Zero), count); } } return(Chart2); }
public override void Customize(MSCHART.Chart chart, Data.BaseDataSet chartdata) { base.Customize(chart, chartdata); var series0 = chart.Series[0]; int n = 0; for (int i = 0; i < chartdata[0].Count; i++) { var dp = series0.Points[i]; var cd = chartdata[0][i]; if (cd.Label != null) { dp.Label = cd.Label; n++; } else { dp.Label = " "; } } if (n > 0) { series0["PieLabelStyle"] = "Outside"; series0["PieLineColor"] = "#c0c0c0"; } else { series0["PieLabelStyle"] = "Disabled"; } }
public override void ConfigureSeriesType(MSCHART.Chart chart) { foreach (var ser in chart.Series) { ser.ChartType = MSCHART.SeriesChartType.StackedArea; } }
static Chart CreateChart(DateTime startDate, DateTime endDate, int mode) { System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 800; Chart2.Height = 300; Chart2.RenderType = RenderType.ImageTag; Chart2.Palette = ChartColorPalette.BrightPastel; Chart2.ChartAreas.Add("Series 1"); Chart2.Legends.Add("Legend 1"); List<UsageDataPoint> diagramData = GetUsageData(startDate, endDate, mode); var versions = diagramData.Select(d => d.Version).Distinct().OrderBy(v => v, new UsageDataAnalysisWebClient.Repositories.VersionNameComparer()).ToList(); var allDates = diagramData.Select(d => d.Date).Distinct().OrderBy(d => d).ToList(); foreach (var version in versions) { var s = Chart2.Series.Add(version); s.ChartType = SeriesChartType.StackedArea; var dict = diagramData.Where(d => d.Version == version).ToDictionary(d => d.Date, d => d.UserCount); foreach (var date in allDates) { int count; dict.TryGetValue(date, out count); // add a half week so that the data points are in the middle of the week s.Points.AddXY(date + (mode == 2 ? TimeSpan.FromDays(15) : mode == 1 ? TimeSpan.FromDays(3.5) : TimeSpan.Zero), count); } } return Chart2; }
public override void ConfigureColors(MSCHART.Chart chart) { int i = 0; foreach (var series in chart.Series) { var paletteItem = this.ChartFormat.Palette[i]; if (this.ChartFormat.ShowAreaUnderLine) { var tc = paletteItem.Color; var bc = new Isotope.Colorspace.ColorRGB32Bit(0x20, paletteItem.SecondaryColor); var top_color = System.Drawing.Color.FromArgb(tc.ToInt()); var bottom_color = System.Drawing.Color.FromArgb(bc.ToInt()); series.Color = top_color; series.BackGradientStyle = MSCHART.GradientStyle.TopBottom; series.BackSecondaryColor = bottom_color; } else { series.Color = System.Drawing.Color.FromArgb(paletteItem.Color.ToInt()); } i++; } }
/// <summary> /// Método que se encarga de llenar los datos de la torta por Tipo de Recursos Valiosos Sobre Total /// </summary> /// <param name="empresa"></param> /// <param name="strDirectorio"></param> /// <returns></returns> public string CrearTortaRecursosSobreTotal(Empresa empresa, string strDirectorio, List <RBV_Clases.RecursoValioso> recursosValiosos, decimal ValorTotal) { System.Web.UI.DataVisualization.Charting.Chart TortaRecursos = CrearTorta(); string[] TitulosTipoVal = recursosValiosos.Where(p => p.Valor >= ValorTotal).Select(p => p.TipoRecurso).Distinct().ToArray(); decimal[] ValoresTipoVal = (from p in recursosValiosos where p.Valor >= ValorTotal group p.IdTipoRecurso by p.IdTipoRecurso into g select Math.Round((Convert.ToDecimal(g.Count()) / Convert.ToDecimal(recursosValiosos.Count)) * 100, 2)).ToArray(); Array.Resize(ref TitulosTipoVal, TitulosTipoVal.Length + 1); TitulosTipoVal[TitulosTipoVal.Length - 1] = "No Valiosos"; Array.Resize(ref ValoresTipoVal, ValoresTipoVal.Length + 1); ValoresTipoVal[ValoresTipoVal.Length - 1] = (100 - ValoresTipoVal.Sum()); TortaRecursos.Series["Recursos"].Points.DataBindXY(TitulosTipoVal, ValoresTipoVal); //TortaRecursos.Series["Recursos"].Points[1]["Exploded"] = "true"; for (int i = 0; i < TortaRecursos.Series["Recursos"].Points.Count; i++) { TortaRecursos.Series["Recursos"].Points[i].LegendText = TitulosTipoVal[i].ToString(); } string strFile = "TortaRecSobret" + empresa.NombreEmpresa + DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + ".Jpeg"; string imgName = string.Concat(strDirectorio, "\\", strFile); TortaRecursos.SaveImage(imgName, ChartImageFormat.Jpeg); return(imgName); }
public override void ConfigureColors(MSCHART.Chart chart) { foreach (var series in chart.Series) { int i = 0; foreach (var point in series.Points) { int color_index = this.UseMultipleColors ? i : 0; if (this.ChartFormat.ColorStyle == ColorStyle.FlatColor) { point.Color = this.ChartFormat.Palette.GetBaseColor(color_index); } else { if (this.BarStyle == BarStyle.Horizontal) { point.Color = this.ChartFormat.Palette.GetDarkColor(color_index); point.BackGradientStyle = MSCHART.GradientStyle.LeftRight; point.BackSecondaryColor = this.ChartFormat.Palette.GetBaseColor(color_index); } else { point.Color = this.ChartFormat.Palette.GetBaseColor(color_index); point.BackGradientStyle = MSCHART.GradientStyle.TopBottom; point.BackSecondaryColor = this.ChartFormat.Palette.GetDarkColor(color_index); } } i++; } } }
public override void ConfigureColors(MSCHART.Chart chart) { int i = 0; foreach (var series in chart.Series) { var paletteItem = this.Palette[i]; if (this.ShowAreaUnderLine) { var tc = paletteItem.Color; var bc = new Viziblr.Colorspace.ColorRGB32Bit(0x20, paletteItem.SecondaryColor); var top_color = tc.ToSystemColor(); var bottom_color = bc.ToSystemColor(); series.Color = top_color; series.BackGradientStyle = MSCHART.GradientStyle.TopBottom; series.BackSecondaryColor = bottom_color; } else { series.Color = paletteItem.Color.ToSystemColor(); } i++; } }
public override void ConfigureLegend(MSCHART.Chart chart) { var legend = new MSCHART.Legend(); chart.Legends.Add(legend); if (this.LegendPosition == LegendPosition.Hidden) { legend.Enabled = false; } else { legend.Docking = this.GetLegendDockingPosition(this.LegendPosition); legend.Enabled = true; legend.Font = this.DefaultFont.GetSDFont(); legend.IsDockedInsideChartArea = true; legend.BorderWidth = 5; legend.BackColor = System.Drawing.Color.Transparent; var series0 = chart.Series[0]; series0.Legend = legend.Name; series0.IsVisibleInLegend = true; foreach (var datapoint in series0.Points) { datapoint.LegendText = datapoint.AxisLabel; datapoint.ToolTip = datapoint.AxisLabel; } series0["PieLabelStyle"] = "Outside"; } }
}//Method public void CreateYAxis(System.Web.UI.DataVisualization.Charting.Chart chart, System.Web.UI.DataVisualization.Charting.ChartArea area, Series series, float axisOffset, float labelsSize) { area.Position = new ElementPosition(axisOffset, 20, 100 - axisOffset, 80); area.InnerPlotPosition = new ElementPosition(labelsSize, 0, 100 - axisOffset - labelsSize, 80); // Create new chart area for original series System.Web.UI.DataVisualization.Charting.ChartArea areaSeries = chart.ChartAreas.Add("ChartArea_" + series.Name); areaSeries.BackColor = Color.Transparent; areaSeries.BorderColor = Color.Transparent; areaSeries.Position.FromRectangleF(area.Position.ToRectangleF()); areaSeries.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF()); areaSeries.AxisX.MajorGrid.Enabled = false; areaSeries.AxisX.MajorTickMark.Enabled = false; areaSeries.AxisX.LabelStyle.Enabled = false; areaSeries.AxisY.MajorGrid.Enabled = false; areaSeries.AxisY.MajorTickMark.Enabled = false; areaSeries.AxisY.LabelStyle.Enabled = false; areaSeries.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero; series.ChartArea = areaSeries.Name; // Create new chart area for axis System.Web.UI.DataVisualization.Charting.ChartArea areaAxis = chart.ChartAreas.Add("AxisY_" + series.ChartArea); areaAxis.BackColor = Color.Transparent; areaAxis.BorderColor = Color.Transparent; areaAxis.Position.FromRectangleF(chart.ChartAreas[series.ChartArea].Position.ToRectangleF()); areaAxis.InnerPlotPosition.FromRectangleF(chart.ChartAreas[series.ChartArea].InnerPlotPosition.ToRectangleF()); // Create a copy of specified series Series seriesCopy = chart.Series.Add(series.Name + "_Copy"); seriesCopy.ChartType = series.ChartType; foreach (DataPoint point in series.Points) { seriesCopy.Points.AddXY(point.XValue, point.YValues[0]); } // Hide copied series seriesCopy.IsVisibleInLegend = false; seriesCopy.Color = Color.Transparent; seriesCopy.BorderColor = Color.Transparent; seriesCopy.ChartArea = areaAxis.Name; // IsDisable grid lines & tickmarks areaAxis.AxisX.LineWidth = 0; areaAxis.AxisX.MajorGrid.Enabled = false; areaAxis.AxisX.MajorTickMark.Enabled = false; areaAxis.AxisX.LabelStyle.Enabled = false; areaAxis.AxisY.MajorGrid.Enabled = false; areaAxis.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero; areaAxis.AxisY.LineColor = series.Color; areaAxis.AxisY.LabelStyle.ForeColor = series.Color; // Adjust area position areaAxis.Position.X -= axisOffset; areaAxis.InnerPlotPosition.X += labelsSize; } //Method
protected virtual void BindSeries(MSCHART.Chart chart, WebCharting.Data.DataSetSingleSeries chartdata) { chart.Series.Clear(); var values = chartdata.Values; var labels = chartdata.XAxisLabels; AddNewSeries(chart, values, labels); }
public override void ConfigureSeriesType(MSCHART.Chart chart) { foreach (var ser in chart.Series) { ser.ChartType = this.GetSeriesChartType(); ser.BorderWidth = this.ChartFormat.LineChartLineWidth; } }
public DailyWeightChartBuilder(IEnumerable<DailyWeight> dailyWeights, Chart chart) : base(chart, 1) { _dailyWeights = dailyWeights; AutoScale = false; MinimumYScale = 400; MaximumYScale = 400; }
public override void ConfigureSeriesType(MSCHART.Chart chart) { foreach (var ser in chart.Series) { ser.ChartType = WebCharting.MSChartUtil.GetLineChartSeriesChartType(this.LineFormat, this.ShowAreaUnderLine); ser.BorderWidth = this.LineFormat.LineWidth; } }
public DailyWeightChartBuilder(IEnumerable <DailyWeight> dailyWeights, Chart chart) : base(chart, 1) { _dailyWeights = dailyWeights; AutoScale = false; MinimumYScale = 400; MaximumYScale = 400; }
protected virtual void ConfigureRendering(MSCHART.Chart chart) { this.InitializeTitle(chart); chart.TextAntiAliasingQuality = MSCHART.TextAntiAliasingQuality.High; chart.IsSoftShadows = true; chart.AntiAliasing = MSCHART.AntiAliasingStyles.All; ConfigureTile(chart); }
public FileResult ChartSample() { var chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.BackColor = System.Drawing.Color.Transparent; chart.BackColor = System.Drawing.Color.FromArgb(0, 0, 0); chart.Width = System.Web.UI.WebControls.Unit.Pixel(250); chart.Height = System.Web.UI.WebControls.Unit.Pixel(2500); var series = new System.Web.UI.DataVisualization.Charting.Series(); series.ChartArea = "ca1"; series.ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Bar; //series.Font = new Font("Verdana", 8.25f, FontStyle.Regular); System.Random myRandom = new System.Random(); for (int i = 0; i < 100; i++) { var dp = new System.Web.UI.DataVisualization.Charting.DataPoint(); dp.AxisLabel = String.Format("{0}-{1}", i, Guid.NewGuid().ToString().Substring(0, 4)); dp.YValues = new double[] { myRandom.Next(5, 100) }; series.Points.Add(dp); } // Next i chart.Series.Add(series); var area = new System.Web.UI.DataVisualization.Charting.ChartArea("ca1"); area.Area3DStyle.Enable3D = false; area.AxisX.Interval = 1; //area.BackColor = Color.Transparent; //var labelStyle = new LabelStyle(); //labelStyle.Enabled = true; //labelStyle.Font = new Font("Arial", 3f); area.AxisX.LabelStyle.Font = new System.Drawing.Font("Verdana", 8.25f, System.Drawing.FontStyle.Underline);//Why does it recognize the style but not the font!!!??? area.BackColor = System.Drawing.Color.Red; //area.BackColor = System.Drawing.Color.White; chart.ChartAreas.Add(area); /* * using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) * { * chart.SaveImage(ms, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png); * ms.Seek(0, System.IO.SeekOrigin.Begin); * * return File(ms.ToArray(), "image/png", "mychart.png"); * } // End Using ms */ return(Chart2Image(chart)); } // End Action ChartSample
private void ReDrawChart() { if (dblpValue == null) { return; } if (this.pChart.Series.Count != 0) { this.pChart.Series.Clear(); } int intNfeature = arrEst.Length; double[,] adblValues = new double[intNfeature, 3]; System.Web.UI.DataVisualization.Charting.Chart pChart = new System.Web.UI.DataVisualization.Charting.Chart(); //nudConfidenceLevel.Value = 99; double dblConfidenceValue = Convert.ToDouble(nudConfidenceLevel.Value); double dblConInstance = pChart.DataManipulator.Statistics.InverseNormalDistribution(dblConfidenceValue / 100); for (int i = 0; i < intNfeature; i++) { double dblValue = arrEst[i]; double dblUncern = dblConInstance * arrVar[i]; if (dblValue < dblUncern) { adblValues[i, 0] = 0; adblValues[i, 1] = dblValue; adblValues[i, 2] = dblUncern; } else { adblValues[i, 0] = dblValue - dblUncern; adblValues[i, 1] = dblUncern; adblValues[i, 2] = dblUncern; } } AddStackedColumnSeries(this, "Low", Color.White, adblValues, 0, intNfeature); AddStackedColumnSeries(this, "Mean", Color.Gray, adblValues, 1, intNfeature); AddStackedColumnSeries(this, "High", Color.Gray, adblValues, 2, intNfeature); double dblMin = 0; double dblMax = arrEst.Max() + (3 * arrVar.Max()); int[,] arrSepVerColors = RedToBlueColorRamps(); int intSepLineIdx = 0; System.Drawing.Color pColor = new Color(); for (int j = 0; j < intResultIdx.Length; j++) { intSepLineIdx = Convert.ToInt32(Math.Floor(dblpValue[j] * 10)); pColor = new Color(); pColor = Color.FromArgb(arrSepVerColors[intSepLineIdx, 0], arrSepVerColors[intSepLineIdx, 1], arrSepVerColors[intSepLineIdx, 2]); AddVerticalLineSeries(this, "ver_" + j.ToString(), pColor, intResultIdx[j] + 0.5, dblMin, dblMax); } }
//饼状图示例 public static Chart DrawPieChartDemo() { List <int> data = Models.StaticModel.createStaticData(); System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 600; Chart2.Height = 300; Chart2.RenderType = System.Web.UI.DataVisualization.Charting.RenderType.ImageTag; Chart2.Palette = ChartColorPalette.BrightPastel; Title t = new Title("表格", Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); Chart2.Titles.Add(t); Chart2.ChartAreas.Add("Series 1"); // create a couple of series Chart2.Series.Add("Series 1"); //Chart2.Series.Add("Series 2"); Chart2.Series["Series 1"].ChartType = SeriesChartType.Pie; Chart2.Series["Series 1"].IsValueShownAsLabel = true; Chart2.Series["Series 1"].Label = "#PERCENT{P2}"; Chart2.Series["Series 1"].LegendText = "#VALX"; DataTable dt = new DataTable(); //Add three columns to the DataTable dt.Columns.Add("Date"); dt.Columns.Add("Volume1"); dt.Columns.Add("Volume2"); //设置数据 List <string> xData = new List <string>() { "Jan", "Feb", "Mar", "Apr", "May", "Jun" }; List <int> yData1 = new List <int>() { 3731, 6024, 4935, 4466, 5117, 3546 }; List <int> yData2 = new List <int>() { 4101, 4324, 2935, 5644, 5671, 4646 }; //设置图表X、Y轴对应项 Chart2.Series["Series 1"].Points.DataBindXY(xData, yData1); //绑定数据 Chart2.DataBind(); Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; Chart2.BorderlineWidth = 2; Chart2.BorderColor = System.Drawing.Color.Black; Chart2.BorderlineDashStyle = ChartDashStyle.Solid; Chart2.BorderWidth = 2; Chart2.Legends.Add("Legend1"); return(Chart2); }
protected virtual void BindSeries(MSCHART.Chart chart, WebCharting.Data.DataSetMultiSeries chartdata) { chart.Series.Clear(); for (int i = 0; i < chartdata.SeriesCount; i++) { var labels = chartdata.XAxisLabels; var values = chartdata.GetSeries(i); this.AddNewSeries(chart, values, labels); } }
public ActionResult ShowDigramForProperty(int propertyId, int sourcePropertyId) { System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); string imageName = _diagramBinder.GenerateChart(propertyId, sourcePropertyId, ref chart); chart.SaveImage(Server.MapPath("~/Temp/" + imageName), ChartImageFormat.Png); return(Json(ResponseStatus.Success, new { data = RenderPartialViewToString("Diagram", imageName) }, JsonRequestBehavior.AllowGet)); }
public FileResult Chart2Image(System.Web.UI.DataVisualization.Charting.Chart chart) { using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { chart.SaveImage(ms, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png); ms.Seek(0, System.IO.SeekOrigin.Begin); return(File(ms.ToArray(), "image/png", "mychart.png")); } // End Using ms }
public override void ConfigureSeriesMarkers(MSCHART.Chart chart) { var ser = chart.Series[0]; ser.Color = System.Drawing.Color.FromArgb(this.ChartFormat.Palette[0].Color.ToInt()); ser.MarkerStyle = this.ChartFormat.GetMSCHARTMarkerStyle(); ser.MarkerSize = this.ChartFormat.LineMarkerSize; ser.MarkerBorderColor = ser.Color; ser.MarkerBorderWidth = ser.BorderWidth; ser.MarkerColor = this.ChartFormat.LineMarkerColor; }
public override void ConfigureSeriesMarkers(MSCHART.Chart chart) { var ser = chart.Series[0]; ser.Color = this.Palette[0].Color.ToSystemColor(); ser.MarkerStyle = this.GetMSCHARTMarkerStyle(); ser.MarkerSize = this.MarkerFormat.MarkerSize; ser.MarkerBorderColor = ser.Color; ser.MarkerBorderWidth = ser.BorderWidth; ser.MarkerColor = this.MarkerFormat.MarkerColor.ToSystemColor(); }
private void AddChartArea(System.Web.UI.DataVisualization.Charting.Chart Chart, ApproachVolumeOptions options, TimeSpan reportTimespan) { //Create the chart area ChartArea chartArea = new ChartArea(); chartArea.Name = "ChartArea1"; chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot; chartArea.AxisY.Minimum = 0; if (options.YAxisMax != null) { chartArea.AxisY.Maximum = options.YAxisMax ?? 0; } chartArea.AxisY.Title = "Volume (Vehicles Per Hour)"; chartArea.AxisY.MajorTickMark.Enabled = true; chartArea.AxisY.MajorGrid.Enabled = true; chartArea.AxisY.IntervalType = DateTimeIntervalType.Number; chartArea.AxisY.Interval = 200; if (options.ShowDirectionalSplits) { chartArea.AxisY2.Minimum = 0.0; chartArea.AxisY2.Maximum = 1.0; chartArea.AxisY2.Title = "Directional Split"; chartArea.AxisY2.IntervalType = DateTimeIntervalType.Number; chartArea.AxisY2.Interval = .1; chartArea.AxisY2.Enabled = AxisEnabled.True; chartArea.AxisY2.IsStartedFromZero = chartArea.AxisY.IsStartedFromZero; chartArea.AxisY2.MajorGrid.LineDashStyle = ChartDashStyle.Dot; chartArea.AxisY2.MajorGrid.Enabled = false; } chartArea.AxisX.Title = "Time (Hour of Day)"; chartArea.AxisX.IntervalType = DateTimeIntervalType.Hours; chartArea.AxisX.LabelStyle.Format = "HH"; if (reportTimespan.Days < 1) { if (reportTimespan.Hours > 1) { chartArea.AxisX.Interval = 1; } else { chartArea.AxisX.LabelStyle.Format = "HH:mm"; } } chartArea.AxisX2.Enabled = AxisEnabled.True; Chart.ChartAreas.Add(chartArea); }
/// <summary> /// 添加Series /// </summary> /// <param name="chart">图表控件</param> /// <param name="count">数量</param> void AddSeries(ref System.Web.UI.DataVisualization.Charting.Chart chart, int count) { for (int i = 0; i < count; i++) { Series item = new Series(); item.Name = "Series" + i.ToString(); item.MarkerSize = 10; item.BorderColor = System.Drawing.Color.FromArgb(180, 26, 59, 105); item.SmartLabelStyle.Enabled = true; chart.Series.Add(item); } }
/// <summary> /// 返回考试分析Chart /// </summary> /// <param name="examReportModels">考试报表Models</param> /// <returns></returns> public Chart Get考试分析Chart(ExamReportModels examReportModels) { /* 考试报表选项 */ ExamReportOptions examReportOptions = examReportModels.ExamReportOptions; /* 考试设置 */ 考试设置 c考试设置 = examReportModels.考试设置; /* list考试分析 */ List<考试分析> list考试分析 = examReportModels.考试分析; /* 标题 */ string sTitle = c考试设置.试卷内容.名称; if (examReportModels.DepartmentID != Guid.Empty) { sTitle += "(" + list考试分析[0].部门名 + ")"; } /* 考试分析图表 */ Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); Title title = new Title(); title.Text = sTitle; title.ToolTip = sTitle; title.Font = new Font("Trebuchet MS", 15, FontStyle.Bold); title.ShadowColor = Color.FromArgb(32, 0, 0, 0); title.ShadowOffset = 3; title.ForeColor = Color.FromArgb(26, 59, 105); chart.Titles.Add(title); chart.Width = examReportModels.ISWord版 ? examReportOptions.WidthWord版 : examReportOptions.Width; chart.Height = examReportOptions.Height; chart.ImageType = ChartImageType.Png; chart.RenderType = RenderType.ImageTag; chart.Palette = ChartColorPalette.BrightPastel; chart.BackColor = Color.FromArgb(211, 223, 240); chart.BackSecondaryColor = Color.White; chart.BackGradientStyle = GradientStyle.TopBottom; chart.BorderlineDashStyle = ChartDashStyle.Solid; chart.BorderWidth = 2; chart.BorderColor = Color.FromArgb(26, 59, 105); chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; return chart; }
/// <summary> /// Construct a ChartDataTableHelper instance. /// </summary> public ChartDataTableHelper() { ChartObj = null; ChartAreas = new ArrayList(); }
/// <summary> /// Initialize the specified ChartArea with a table and /// set a boolean to show or hide total columns. /// </summary> public void Initialize(System.Web.UI.DataVisualization.Charting.Chart chartObj, string chartAreaName, bool addTableTotals) { ChartObj = chartObj; AddTableTotals = addTableTotals; AddDataTable(chartAreaName); if(!Initialized) ChartObj.PostPaint +=new EventHandler<ChartPaintEventArgs>(this.Chart_PostPaint); Initialized = true; }
/// <summary> /// Initialize all ChartAreas with a table. /// </summary> public void Initialize(System.Web.UI.DataVisualization.Charting.Chart chartObj) { ChartObj = chartObj; foreach(ChartArea area in ChartObj.ChartAreas) { AddDataTable(area.Name); } if(!Initialized) ChartObj.PostPaint +=new EventHandler<ChartPaintEventArgs>(this.Chart_PostPaint); Initialized = true; }
// GET: /Reading/Chart /// <author> /// Sanders Lee /// </author> /// <summary> /// Renders the graph of a sensor's data /// </summary> /// <param name="id">The id of the sensor to get readings for</param> /// <param name="num">The number of latest readings to get</param> /// <returns>Returns the graph in png format</returns> public ActionResult Chart(int? id, int? num) { if (id == null || num == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); Sensor s = db.Sensors.Find(id); if (s == null) return HttpNotFound(); System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = 1100; chart.Height = 470; chart.AntiAliasing = System.Web.UI.DataVisualization.Charting.AntiAliasingStyles.Graphics; chart.BackImageTransparentColor = System.Drawing.Color.Transparent; chart.BackColor = System.Drawing.Color.Transparent; chart.ChartAreas.Add(new ChartArea()); // label the axes chart.ChartAreas[0].AxisX.Title = "Time"; chart.ChartAreas[0].AxisX.TitleFont = new Font("Arial", 12f, FontStyle.Bold); chart.ChartAreas[0].AxisY.Title = s.Type.Type + " (" + s.Type.Units + ")"; chart.ChartAreas[0].AxisY.TitleFont = new Font("Arial", 12f, FontStyle.Bold); chart.ChartAreas[0].BackImageTransparentColor = System.Drawing.Color.Transparent; chart.ChartAreas[0].BackColor = System.Drawing.Color.Transparent; for (int i = 0; i < 4; i++) chart.Series.Add(new Series()); // declarations and stylings for lines and points // main data line chart.Series[0].ChartType = SeriesChartType.Line; chart.Series[0].Color = Color.Navy; chart.Series[0].BorderWidth = 2; // upper limit line chart.Series[1].ChartType = SeriesChartType.Line; chart.Series[1].Color = Color.DarkRed; chart.Series[1].BorderWidth = 3; chart.Series[1].BorderDashStyle = ChartDashStyle.Dash; // lower limit line chart.Series[2].ChartType = SeriesChartType.Line; chart.Series[2].Color = Color.DarkRed; chart.Series[2].BorderWidth = 3; chart.Series[2].BorderDashStyle = ChartDashStyle.Dash; // data point highlight chart.Series[3].ChartType = SeriesChartType.Point; chart.Series[3].MarkerSize = 10; // set the graph data, and only get the specified number of most recent points List<Reading> list = db.Readings.Where(k => k.SensorID == id).OrderBy(k => k.ID).ToList(); // no data == empty image if (list.Count == 0) { Bitmap image = new Bitmap(1, 1); MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); return File(ms.ToArray(), "image/png"); } // cannot grab more data points than there is if (num > list.Count) num = list.Count; for (int i = (int)num - 1; i >=0; i--) { string x = list[list.Count - i - 1].LoggedTime.ToString(); double y = list[list.Count - i - 1].Data; chart.Series[0].Points.AddXY(x, y); // data line chart.Series[1].Points.AddXY(x, s.MaxSafeReading); // upper limit line chart.Series[2].Points.AddXY(x, s.MinSafeReading); // lower limit line chart.Series[3].Points.AddXY(x, y); // data points // color the points differently depending on abnormality if (y < s.MinSafeReading || y > s.MaxSafeReading) chart.Series[3].Points[(int)num - i - 1].Color = Color.Red; else chart.Series[3].Points[(int)num - i - 1].Color = Color.LawnGreen; } // labelling the max and min lines chart.Series[1].Points[0].Label = "Maximum Acceptable Value"; chart.Series[1].Points[0].LabelForeColor = Color.DarkRed; chart.Series[2].Points[0].Label = "Minimum Acceptable Value"; chart.Series[2].Points[0].LabelForeColor = Color.DarkRed; // draw the graph out to a file using (var ms = new MemoryStream()) { chart.SaveImage(ms, ChartImageFormat.Png); ms.Seek(0, SeekOrigin.Begin); return File(ms.ToArray(), "image/png", "datachart.png"); } }
public async Task<MemoryStream> LoadQSORateChart(ChartCtlDataSettingsDto ChartCtlDataSettingsDto, IRepositoryAsync<Log> LogRepository, string username) { MemoryStream MemoryStream = null; bool bOK = true; IList<ContestInfoDTO> ContestInfosDTOList = new List<ContestInfoDTO>(); LoadContestInfoDTO(ChartCtlDataSettingsDto, ContestInfosDTOList, LogRepository, username); //set ContestInfoDTO ContestInfoDTO ContestInfoDTO1 = ContestInfosDTOList.Where(c => c.CallGroup == common.Enum.CallGroupEnum.CALL1).FirstOrDefault(); ContestInfoDTO ContestInfoDTO2 = ContestInfosDTOList.Where(c => c.CallGroup == common.Enum.CallGroupEnum.CALL2).FirstOrDefault(); ContestInfoDTO ContestInfoDTO3= ContestInfosDTOList.Where(c => c.CallGroup == common.Enum.CallGroupEnum.CALL3).FirstOrDefault(); ChartQuery ChartQuery = new Charting.ChartQuery(); ChartAreaInfoParams ChartAreaParams = new ChartAreaInfoParams(); //CHART QSORateChart = new System.Web.UI.DataVisualization.Charting.Chart() { ID = "QSORateChart", Height = new System.Web.UI.WebControls.Unit("400px"), //ImageStorageMode = System.Web.UI.DataVisualization.Charting.ImageStorageMode.UseImageLocation, RenderType = RenderType.BinaryStreaming, BackColor = Color.FromArgb(0xFF, 0xC9, 0xEC, 0xFE), Width = new System.Web.UI.WebControls.Unit("984px"), AntiAliasing = System.Web.UI.DataVisualization.Charting.AntiAliasingStyles.All, TextAntiAliasingQuality = System.Web.UI.DataVisualization.Charting.TextAntiAliasingQuality.High }; QSORateChart.CustomizeLegend += QSORateChart_CustomizeLegend; //QSORateChart.Customize += QSORateChart_Customize; //TITLES Title TitleChartName = new System.Web.UI.DataVisualization.Charting.Title() { Name = "ChartName", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Emboss, ForeColor = Color.FromArgb(0xFF, 0, 99, 99), Font = new System.Drawing.Font(new System.Drawing.FontFamily("Microsoft Sans Serif"), 22) }; Title TitleTkey3 = new System.Web.UI.DataVisualization.Charting.Title() { Name = "Tkey3", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Emboss, ForeColor = Color.FromArgb(0xFF, 0, 99, 99), Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 10), Alignment = ContentAlignment.BottomLeft, Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, DockingOffset = 2 }; Title TitleTkey2 = new System.Web.UI.DataVisualization.Charting.Title() { Name = "Tkey2", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Emboss, ForeColor = Color.FromArgb(0xFF, 0, 99, 99), Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 10), Alignment = ContentAlignment.BottomLeft, Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, DockingOffset = 4 }; Title TitleTkey1 = new System.Web.UI.DataVisualization.Charting.Title() { Name = "Tkey1", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Emboss, ForeColor = Color.FromArgb(0xFF, 0, 99, 99), Font = new System.Drawing.Font(new System.Drawing.FontFamily("Courier New"), 10), Alignment = ContentAlignment.BottomLeft, Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, DockingOffset = 6 }; Title TitleCorp = new System.Web.UI.DataVisualization.Charting.Title() { Name = "Corp", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Default, ForeColor = Color.Blue, Font = new System.Drawing.Font(new System.Drawing.FontFamily("Trebuchet MS"), 8.25f), Alignment = ContentAlignment.BottomRight, Url = "http://www.psws.com", Text="© PSWS.com", Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, DockingOffset = 18 }; Title TitleVersion = new System.Web.UI.DataVisualization.Charting.Title() { Name = "Vers", TextStyle = System.Web.UI.DataVisualization.Charting.TextStyle.Default, ForeColor = Color.Black, Font = new System.Drawing.Font(new System.Drawing.FontFamily("Trebuchet MS"), 8.25f), Alignment = ContentAlignment.BottomRight, Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, DockingOffset = 20 }; QSORateChart.Titles.Add(TitleChartName); QSORateChart.Titles.Add(TitleTkey3); QSORateChart.Titles.Add(TitleTkey2); QSORateChart.Titles.Add(TitleTkey1); QSORateChart.Titles.Add(TitleCorp); QSORateChart.Titles.Add(TitleVersion); //LEGENDS Legend LegendLegend1 = new System.Web.UI.DataVisualization.Charting.Legend() { Name = "Legend1", TitleSeparator = System.Web.UI.DataVisualization.Charting.LegendSeparatorStyle.DoubleLine, BorderColor = Color.Black, BorderWidth = 1, LegendStyle = System.Web.UI.DataVisualization.Charting.LegendStyle.Row, IsEquallySpacedItems = true, IsTextAutoFit = false, TitleAlignment = StringAlignment.Center, BackGradientStyle = System.Web.UI.DataVisualization.Charting.GradientStyle.HorizontalCenter, BackColor = Color.FromArgb(0xFF, 0xEE, 0xEE, 0xEE), BackSecondaryColor = Color.White, Alignment = StringAlignment.Center, Docking = System.Web.UI.DataVisualization.Charting.Docking.Bottom, ItemColumnSeparator = System.Web.UI.DataVisualization.Charting.LegendSeparatorStyle.GradientLine, ItemColumnSpacing = 30, }; QSORateChart.Legends.Add(LegendLegend1); //CHARTAREAS ChartArea ChartAreaChartArea1 = new System.Web.UI.DataVisualization.Charting.ChartArea() { Name = "ChartArea1", BackColor = Color.FromArgb(0xFF, 0x99, 0xCC, 0xFF), Area3DStyle = new System.Web.UI.DataVisualization.Charting.ChartArea3DStyle() { Enable3D = false }, BackGradientStyle = System.Web.UI.DataVisualization.Charting.GradientStyle.TopBottom, AxisX = new System.Web.UI.DataVisualization.Charting.Axis() { LineWidth = 2, MaximumAutoSize = 100, Title = "Day-Time", IsMarginVisible = true, IntervalOffsetType = System.Web.UI.DataVisualization.Charting.DateTimeIntervalType.Auto, IsStartedFromZero = false }, AxisY = new System.Web.UI.DataVisualization.Charting.Axis() { LineWidth = 0 } }; QSORateChart.ChartAreas.Add(ChartAreaChartArea1); // get from combobox ChartAreaParams.ChartPointInterval = Convert.ToInt32(ChartCtlDataSettingsDto.ControlSettingsDto.ControlYaxisSettingsDto.YaxisInterval); //ChartInfo int AlphaBlend; string YaxisViewtype = ChartCtlDataSettingsDto.ControlSettingsDto.ControlYaxisSettingsDto.YaxisViewType; if (YaxisViewtype.Contains("3D")) { //strip 3d string str = YaxisViewtype.Replace("3D", ""); ChartAreaParams.charttype = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), str.Trim()); QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.PointDepth = 75; QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.PointGapDepth = 75; //QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.Inclination = 20; //QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.Rotation = 20; //QSORateChart.ChartAreas["ChartArea1"].ShadowColor = Color.Transparent; //QSORateChart.ChartAreas["ChartArea1"].Area3DStyle.LightStyle= LightStyle.Realistic; AlphaBlend = 220; } else { ChartAreaParams.charttype = (SeriesChartType)Enum.Parse(typeof(SeriesChartType), YaxisViewtype); AlphaBlend = 0xff; } ChartAreaParams.ChartXaxisInterval = 1; ChartAreaParams.ChartXaxisIntervalType = DateTimeIntervalType.Hours; //tickmarks and grids. ChartAreaParams.MajorVerticalInterval = 24; ChartAreaParams.MinorVerticalInterval = 1; ChartAreaParams.AxisXMaxFudgeSeconds = 1; //check if all years the same MixedYears = SetMixedYears(ChartCtlDataSettingsDto.DataCallInfoDto, ContestInfoDTO1, ContestInfoDTO2, ContestInfoDTO3); // get from combo box ChartAreaParams.MixedYears = MixedYears; //ChartTickmarkInfo XMajorTickMarkObj = new ChartTickmarkInfo(ChartXaxisIntervalType, 24, 5, Color.Red, 2); ChartAreaDto ChartAreaDto = new ChartAreaDto(ChartAreaParams); TickMarkInfoParams TMinfo = new TickMarkInfoParams(); GridInfoParams CgInfo = new GridInfoParams(); //Major Vertical TMinfo.IntervalType = ChartAreaDto.ChartXaxisIntervalType; TMinfo.Interval = ChartAreaDto.MajorHorizontalInterval; TMinfo.Size = 5; TMinfo.LineColor = Color.Red; TMinfo.LineWidth = 1; TMinfo.Style = TickMarkStyle.OutsideArea; ChartAreaDto.CreateChartTickmark(QSORateChart.ChartAreas["ChartArea1"].AxisX.MajorTickMark, ChartAreaDto.VerticalType.Major, TMinfo); CgInfo.IntervalType = ChartAreaDto.ChartXaxisIntervalType;// need to set for lines to appear CgInfo.Interval = ChartAreaDto.MajorHorizontalInterval; CgInfo.LineColor = Color.Red; CgInfo.LineDashStyle = ChartDashStyle.Dot; CgInfo.LineWidth = 1; ChartAreaDto.CreateChartGrid(QSORateChart.ChartAreas["ChartArea1"].AxisX.MajorGrid, ChartAreaDto.VerticalType.Major, CgInfo); //Minor Vertical TMinfo.IntervalType = ChartAreaDto.ChartXaxisIntervalType; TMinfo.Interval = ChartAreaDto.MinorHorizontalInterval; TMinfo.Size = 2; TMinfo.LineColor = Color.Black; TMinfo.LineWidth = 1; TMinfo.Style = TickMarkStyle.OutsideArea; ChartAreaDto.CreateChartTickmark(QSORateChart.ChartAreas["ChartArea1"].AxisX.MinorTickMark, ChartAreaDto.VerticalType.Minor, TMinfo); CgInfo.IntervalType = ChartAreaDto.ChartXaxisIntervalType;// need to set for lines to appear CgInfo.Interval = ChartAreaDto.MinorHorizontalInterval; CgInfo.LineColor = Color.FromArgb(37, 0, 0, 0); CgInfo.LineDashStyle = ChartDashStyle.Solid; CgInfo.LineWidth = 1; ChartAreaDto.CreateChartGrid(QSORateChart.ChartAreas["ChartArea1"].AxisX.MinorGrid, ChartAreaDto.VerticalType.Minor, CgInfo); string QSOQuery = string.Empty; ContestViewParmsDTO ContestViewParmsDTO = null; //dummy //Series ICollection<SeriesObj> SerCollection = new System.Collections.ObjectModel.Collection<SeriesObj>(); string YaxisFunction = ChartCtlDataSettingsDto.ControlSettingsDto.ControlYaxisSettingsDto.YaxisFunction; QSOLogFilter QSOFilter; QSOFilter = ChartQuery.GetQSOFilter(ChartCtlDataSettingsDto.ControlSettingsDto.ControlFiltersSettingsDto, ChartCtlDataSettingsDto.DataCallInfoDto); if (!string.IsNullOrEmpty(ChartCtlDataSettingsDto.DataCallInfoDto[0].SelectedCall) && !ChartCtlDataSettingsDto.DataCallInfoDto[0].Disabled) { QsoRadioStationFilter QsoRadioStationFilter = ChartQuery.GetQsoRadioStationFilter(ChartCtlDataSettingsDto.DataCallInfoDto[0]); ChartQuery.GetQuery(LogRepository, QSORateChart.ID, QSOFilter, QsoRadioStationFilter, ChartCtlDataSettingsDto.DataCallInfoDto[0], ChartCtlDataSettingsDto.ControlSettingsDto, ContestInfoDTO1, ChartAreaDto, YaxisFunction, out ContestViewParmsDTO, username); SeriesObj Series1Obj = new SeriesObj(ContestInfoDTO1, Color.FromArgb(AlphaBlend, Color.Blue), ChartQuery.GetDataTableSQL); bOK = Series1Obj.Create(LogRepository, ChartAreaDto, QSORateChart.ID, ContestViewParmsDTO, username); if (bOK) { QSORateChart.Series.Add(Series1Obj); SerCollection.Add(Series1Obj); } } if (!string.IsNullOrEmpty(ChartCtlDataSettingsDto.DataCallInfoDto[1].SelectedCall) && !ChartCtlDataSettingsDto.DataCallInfoDto[1].Disabled) { QsoRadioStationFilter QsoRadioStationFilter = ChartQuery.GetQsoRadioStationFilter(ChartCtlDataSettingsDto.DataCallInfoDto[1]); ChartQuery.GetQuery(LogRepository, QSORateChart.ID, QSOFilter, QsoRadioStationFilter, ChartCtlDataSettingsDto.DataCallInfoDto[1], ChartCtlDataSettingsDto.ControlSettingsDto, ContestInfoDTO2, ChartAreaDto, YaxisFunction, out ContestViewParmsDTO, username); SeriesObj Series2Obj = new SeriesObj(ContestInfoDTO2, Color.FromArgb(AlphaBlend, Color.OrangeRed), ChartQuery.GetDataTableSQL); bOK = Series2Obj.Create(LogRepository, ChartAreaDto, QSORateChart.ID, ContestViewParmsDTO, username); if (bOK) { QSORateChart.Series.Add(Series2Obj); //string st = QSORateChart.Series[Series2Obj.Name].ChartArea; //QSORateChart.Series[Series2Obj.Name].ChartArea = Chart1.ChartAreas["ChartArea1"].Name; SerCollection.Add(Series2Obj); } } if (!string.IsNullOrEmpty(ChartCtlDataSettingsDto.DataCallInfoDto[2].SelectedCall) && !ChartCtlDataSettingsDto.DataCallInfoDto[2].Disabled) { QsoRadioStationFilter QsoRadioStationFilter = ChartQuery.GetQsoRadioStationFilter(ChartCtlDataSettingsDto.DataCallInfoDto[2]); ChartQuery.GetQuery(LogRepository, QSORateChart.ID, QSOFilter, QsoRadioStationFilter, ChartCtlDataSettingsDto.DataCallInfoDto[2], ChartCtlDataSettingsDto.ControlSettingsDto, ContestInfoDTO3, ChartAreaDto, YaxisFunction, out ContestViewParmsDTO, username); SeriesObj Series3Obj = new SeriesObj(ContestInfoDTO3, Color.FromArgb(AlphaBlend, Color.SeaGreen), ChartQuery.GetDataTableSQL); bOK = Series3Obj.Create(LogRepository, ChartAreaDto, QSORateChart.ID, ContestViewParmsDTO, username); if (bOK) { QSORateChart.Series.Add(Series3Obj); SerCollection.Add(Series3Obj); } } //set 2nd titles string key = ""; foreach (SeriesObj obj in SerCollection) { switch (obj.ContestInfoDTO.CallGroup) { case Logqso.mvc.common.Enum.CallGroupEnum.CALL1: key = "Tkey1"; break; case Logqso.mvc.common.Enum.CallGroupEnum.CALL2: key = "Tkey2"; break; case Logqso.mvc.common.Enum.CallGroupEnum.CALL3: key = "Tkey3"; break; default: break; } if (obj.ContestInfoDTO.Call != string.Empty) { string OPr = string.Empty; switch (obj.ContestInfoDTO.CatOperatorEnum) { case Logqso.mvc.common.Enum.CatOperatorEnum.ALL: //should never occur break; case Logqso.mvc.common.Enum.CatOperatorEnum.SINGLE_OP: if (obj.ContestInfoDTO.CatBandEnum == common.Enum.CatBandEnum.ALL) { OPr = "SOAB"; }else{ OPr = "SOSB"; } break; case Logqso.mvc.common.Enum.CatOperatorEnum.MULTI_OP: if (obj.ContestInfoDTO.CatNoOfTxEnum == common.Enum.CatNoOfTxEnum.ONE) { OPr = "MS"; } else if (obj.ContestInfoDTO.CatNoOfTxEnum == common.Enum.CatNoOfTxEnum.TWO) { OPr = "M2"; } else{ OPr = "MM"; } break; case Logqso.mvc.common.Enum.CatOperatorEnum.CHECKLOG: OPr = "CHECKLOG"; break; default: break; } if (OPr == "SOSB") { switch (obj.ContestInfoDTO.CatBandEnum) { case Logqso.mvc.common.Enum.CatBandEnum.ALL: //doews not occur break; case Logqso.mvc.common.Enum.CatBandEnum._160M: OPr += " 160M"; break; case Logqso.mvc.common.Enum.CatBandEnum._80M: OPr += " 80M"; break; case Logqso.mvc.common.Enum.CatBandEnum._40M: OPr += " 40M"; break; case Logqso.mvc.common.Enum.CatBandEnum._20M: OPr += " 20M"; break; case Logqso.mvc.common.Enum.CatBandEnum._15M: OPr += " 15M"; break; case Logqso.mvc.common.Enum.CatBandEnum._10M: OPr += " 10M"; break; default: break; } switch (obj.ContestInfoDTO.CatPowerEnum) { case Logqso.mvc.common.Enum.CatPowerEnum.ALL: //does not occur break; case Logqso.mvc.common.Enum.CatPowerEnum.HIGH: OPr += " HIGH"; break; case Logqso.mvc.common.Enum.CatPowerEnum.LOW: OPr += " LOW"; break; case Logqso.mvc.common.Enum.CatPowerEnum.QRP: OPr += " QRP"; break; default: break; } if (obj.ContestInfoDTO.CatAssistedEnum == common.Enum.CatAssistedEnum.ASSISTED) { OPr += " Assisted"; } else { OPr += " Non-Assisted"; } } QSORateChart.Titles[key].Text += string.Format("{0} {1} {2}", obj.ContestInfoDTO.Call.PadRight(10), obj.ContestInfoDTO.ContestName, OPr); //QSORateChart.Titles[key].ForeColor = Color.FromArgb(0xff, 0, 99, 99); } } //Select Log that exists ContestInfoDTO ContestInfoDTON = null; if (ContestInfoDTO1 != null) { ContestInfoDTON = ContestInfoDTO1; } else if (ContestInfoDTO2 != null) { ContestInfoDTON = ContestInfoDTO2; } else if (ContestInfoDTO3 != null) { ContestInfoDTON = ContestInfoDTO2; } //TITLES if (ChartAreaDto.MixedYears) { QSORateChart.Titles["ChartName"].Text = ContestViewParmsDTO.sTitle; } else { if (ContestInfoDTON != null) { QSORateChart.Titles["ChartName"].Text = string.Format("{0} {1}", ContestInfoDTON.ContestID, ContestViewParmsDTO.sTitle); } } string ver = ConfigurationManager.AppSettings["AppVersion"].ToString(); QSORateChart.Titles["Vers"].Text = string.Format("Version: {0}", ver); //AXISX Font fontAxis = new Font("Times New Roman", 14, FontStyle.Bold); AxisInfoParams Ai = new AxisInfoParams(); Ai.TitleFont = fontAxis; Ai.Title = "Time"; Ai.LineWidth = 1; Ai.LabelStyleFormat = "{0:HH:mm}"; Ai.LabelStyleAngle = -90; //Date can be different but times are the same 48 hours if (ChartAreaDto.MixedYears) { if (ContestInfoDTON != null) { int days = ContestInfoDTON.endTime.AddMinutes(1).Subtract(ContestInfoDTON.startTime).Days; Ai.Minimum = DateTime.Parse("1/1/1990 " + ContestInfoDTON.startTime.TimeOfDay).ToOADate(); Ai.Maximum = DateTime.Parse("1/" + string.Format("{0}", 1 + days) + "/1990 " + ContestInfoDTON.endTime.AddSeconds(ChartAreaDto.AxisXMaxFudgeSeconds).TimeOfDay).ToOADate(); } } else { if (ContestInfoDTO1 != null && !ContestInfoDTO1.Disabled) { Ai.Minimum = ContestInfoDTO1.startTime.ToOADate(); Ai.Maximum = ContestInfoDTO1.endTime.AddSeconds(ChartAreaDto.AxisXMaxFudgeSeconds).ToOADate(); } else if (ContestInfoDTO2 != null && !ContestInfoDTO2.Disabled) { Ai.Minimum = ContestInfoDTO2.startTime.ToOADate(); Ai.Maximum = ContestInfoDTO2.endTime.AddSeconds(ChartAreaDto.AxisXMaxFudgeSeconds).ToOADate(); } else if ( ContestInfoDTO3 != null && !ContestInfoDTO3.Disabled) { Ai.Minimum = ContestInfoDTO3.startTime.ToOADate(); Ai.Maximum = ContestInfoDTO3.endTime.AddSeconds(ChartAreaDto.AxisXMaxFudgeSeconds).ToOADate(); } } Ai.IntervalType = ChartAreaDto.ChartXaxisIntervalType; Ai.Interval = ChartAreaDto.MinorHorizontalInterval; ChartAreaDto.InitChartAxis(QSORateChart.ChartAreas["ChartArea1"].AxisX, Ai); // set second row of labels QSORateChart.ChartAreas["ChartArea1"].AxisX.CustomLabels.Add(24, ChartAreaDto.ChartXaxisIntervalType, "Day {0:dd}", 2, LabelMarkStyle.LineSideMark); //QSORateChart.ChartAreas["ChartArea1"].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.DecreaseFont | LabelAutoFitStyles.StaggeredLabels | LabelAutoFitStyles.LabelsAngleStep90; //QSORateChart.Series[Series1Obj.Name].AxisLabel = "#VALX{dd}\n#VALX{MMM}\n#VALX{yyy}"; //QSORateChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.IsEndLabelVisible = true; //QSORateChart.ChartAreas["ChartArea1"].InnerPlotPosition = new ElementPosition(0, 0, 90, 100); //QSORateChart.ChartAreas["ChartArea1"].AxisX.IntervalOffset = 15; //QSORateChart.ChartAreas["ChartArea1"].AxisX.IntervalOffsetType = DateTimeIntervalType.Minutes; //TabContainerCall.Controls.Add( ////SCALEVIEW int startHour = Convert.ToInt32(ChartCtlDataSettingsDto.ControlSettingsDto.ControlXaxisSettingsDto.XaxisStarttime.Substring(0, 2)); int Size = Convert.ToInt32(ChartCtlDataSettingsDto.ControlSettingsDto.ControlXaxisSettingsDto.XaxisDuration); if (Size != 48) { int Day = 1; if (ChartCtlDataSettingsDto.ControlSettingsDto.ControlXaxisSettingsDto.XaxisStarttime.Contains("Day2")) { Day = 2; } QSORateChart.ChartAreas["ChartArea1"].AxisX.IsStartedFromZero = true; DateTime pos; if (ChartAreaDto.MixedYears) { pos = new DateTime(1990, 1, Day, startHour, 00, 00); } else { if (ContestInfoDTON != null) { if (Day == 2) { pos = ContestInfoDTON.startTime.AddDays(1).AddHours(startHour); } else { pos = ContestInfoDTON.startTime.AddHours(startHour); } }else { pos = new DateTime(1990, 1, Day, startHour, 00, 00); } } QSORateChart.ChartAreas["ChartArea1"].AxisX.ScaleView.Position = pos.ToOADate(); QSORateChart.ChartAreas["ChartArea1"].AxisX.ScaleView.Size = Size;// count of ScaleView.SizeType QSORateChart.ChartAreas["ChartArea1"].AxisX.ScaleView.SizeType = ChartAreaParams.ChartXaxisIntervalType; } //AXISY //QSORateChart.ImageLocation QSORateChart.ChartAreas["ChartArea1"].AxisY.TitleFont = fontAxis; QSORateChart.ChartAreas["ChartArea1"].AxisY.Title = ContestViewParmsDTO.sYAxis; QSORateChart.ChartAreas["ChartArea1"].AxisY.LabelStyle.Format = "{0:n0}"; if (ChartCtlDataSettingsDto.ControlSettingsDto.ControlYaxisSettingsDto.YaxisFunction.Contains("Sum")) { QSORateChart.ChartAreas["ChartArea1"].AxisY.Enabled = AxisEnabled.False; } QSORateChart.ChartAreas["ChartArea1"].AxisY2.Enabled = AxisEnabled.True; QSORateChart.ChartAreas["ChartArea1"].AxisY2.LineWidth = 0; QSORateChart.ChartAreas["ChartArea1"].AxisY2.LabelStyle.Format = "{0:n0}"; QSORateChart.ChartAreas["ChartArea1"].Position = new ElementPosition(0, 10, 100, 80); QSORateChart.Titles["ChartName"].Position = new ElementPosition(2, 0, 50, 10); QSORateChart.Legends["Legend1"].Position = new ElementPosition(50, 1, 50, 9); // LEGENDS QSORateChart.Legends["Legend1"].ForeColor = Color.DarkOliveGreen; Font fontLegend = new Font("Times New Roman", 11, FontStyle.Bold, GraphicsUnit.Point); QSORateChart.Legends["Legend1"].Font = fontLegend; QSORateChart.Legends["Legend1"].Position.Height = 7; // draw! //QSORateChart.Invalidate(); //string path = Server.MapPath("~/ChartImages/chart.png"); try { //String filePath = HostingEnvironment.MapPath("~/Image/charttest.png"); //QSORateChart.SaveImage(filePath, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png); //FileStream fileStream = new FileStream(filePath, FileMode.Open); //Image image = System.Drawing.Image.FromStream(fileStream); //MemoryStream memoryStream = new MemoryStream(); //image.Save(memoryStream, ImageFormat.Png); MemoryStream = new MemoryStream(); QSORateChart.SaveImage(MemoryStream, ChartImageFormat.Png); } catch (Exception ex) { throw; } return MemoryStream; }
//饼状图示例 public static Chart DrawPieChartDemo() { List<int> data = Models.StaticModel.createStaticData(); System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 600; Chart2.Height = 300; Chart2.RenderType = System.Web.UI.DataVisualization.Charting.RenderType.ImageTag; Chart2.Palette = ChartColorPalette.BrightPastel; Title t = new Title("表格", Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); Chart2.Titles.Add(t); Chart2.ChartAreas.Add("Series 1"); // create a couple of series Chart2.Series.Add("Series 1"); //Chart2.Series.Add("Series 2"); Chart2.Series["Series 1"].ChartType = SeriesChartType.Pie; Chart2.Series["Series 1"].IsValueShownAsLabel = true; Chart2.Series["Series 1"].Label = "#PERCENT{P2}"; Chart2.Series["Series 1"].LegendText = "#VALX"; DataTable dt = new DataTable(); //Add three columns to the DataTable dt.Columns.Add("Date"); dt.Columns.Add("Volume1"); dt.Columns.Add("Volume2"); //设置数据 List<string> xData = new List<string>() { "Jan", "Feb", "Mar", "Apr" , "May" , "Jun" }; List<int> yData1 = new List<int>() { 3731 , 6024 , 4935 , 4466 , 5117 , 3546 }; List<int> yData2 = new List<int>() { 4101 , 4324 , 2935 , 5644 , 5671 , 4646 }; //设置图表X、Y轴对应项 Chart2.Series["Series 1"].Points.DataBindXY(xData, yData1); //绑定数据 Chart2.DataBind(); Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; Chart2.BorderlineWidth = 2; Chart2.BorderColor = System.Drawing.Color.Black; Chart2.BorderlineDashStyle = ChartDashStyle.Solid; Chart2.BorderWidth = 2; Chart2.Legends.Add("Legend1"); return Chart2; }
public ChartControl(System.Web.UI.DataVisualization.Charting.Chart chart) { this.Chart1 = chart; }
public ActionResult RateChart1() { Dictionary<string, int> chartList = new Dictionary<string, int>(); chartList.Add("1 star:",23); chartList.Add("2 star:",43); chartList.Add("3 star:",34); chartList.Add("4 star:",52); chartList.Add("5 star:",48); int tong = 0; foreach (int i in chartList.Values) tong = tong + i; ViewData["Chart"] = chartList; System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 150; Chart2.Height = 120; Chart2.RenderType = RenderType.ImageTag; Chart2.BackColor = System.Drawing.Color.AliceBlue; //Chart2.Palette = ChartColorPalette.EarthTones; Chart2.Palette = ChartColorPalette.BrightPastel; Chart2.BackGradientStyle = GradientStyle.DiagonalRight; Chart2.BackSecondaryColor = System.Drawing.Color.Orange; Title t = new Title(tong + " reviews" , Docking.Top, new System.Drawing.Font("Trebuchet MS", 9, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); t.Position.X = 50; t.Position.Y = 10; Chart2.Titles.Add(t); Chart2.ChartAreas.Add("Series 1"); Chart2.ChartAreas["Series 1"].AxisX.MajorGrid.Enabled = false; Chart2.ChartAreas["Series 1"].AxisX.MajorTickMark.Enabled = true; Chart2.ChartAreas["Series 1"].AxisX.MajorTickMark.LineWidth = 0; Chart2.ChartAreas["Series 1"].AxisX.MajorTickMark.Interval = 0; Chart2.ChartAreas["Series 1"].AxisX.LabelStyle.Font = new System.Drawing.Font("Trebuchet MS", 8, System.Drawing.FontStyle.Regular); Chart2.ChartAreas["Series 1"].AxisY.Enabled =AxisEnabled.False; //Chart2.ChartAreas["Series 1"].AxisY.LabelStyle.Enabled = false; Chart2.ChartAreas["Series 1"].BorderDashStyle = ChartDashStyle.Dot; Chart2.ChartAreas["Series 1"].BackColor = System.Drawing.Color.AliceBlue; Chart2.ChartAreas["Series 1"].BackGradientStyle = GradientStyle.DiagonalRight; Chart2.ChartAreas["Series 1"].BackSecondaryColor = System.Drawing.Color.Orange; // create a couple of series Chart2.Series.Add("Series 1"); Chart2.Series["Series 1"].ChartType = SeriesChartType.Bar; Chart2.Series["Series 1"].IsValueShownAsLabel = true; //Chart2.Series["Series 1"].SmartLabelStyle. //Chart2.Series["Series 1"].EmptyPointStyle.Font = new System.Drawing.Font("Trebuchet MS", 6, System.Drawing.FontStyle.Bold); // add points to series 1 foreach (KeyValuePair<string,int> value in ((Dictionary<string, int>)ViewData["Chart"])) { Chart2.Series["Series 1"].Points.AddXY(value.Key, value.Value); } Chart2.Series["Series 1"].Color = System.Drawing.Color.OrangeRed; Chart2.Series["Series 1"].Font = new System.Drawing.Font("Trebuchet MS", 7, System.Drawing.FontStyle.Bold); Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Sunken; Chart2.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); Chart2.BorderlineDashStyle = ChartDashStyle.Solid; Chart2.BorderWidth = 0; // Render chart control //Chart2.Page = this; //HtmlTextWriter writer = new HtmlTextWriter(ControllerContext.ParentActionViewContext.Writer); //Chart2.RenderControl(writer); var returnStream = new MemoryStream(); Chart2.ImageType = ChartImageType.Png; Chart2.SaveImage(returnStream); returnStream.Position = 0; return new FileStreamResult(returnStream, "image/png"); }
public FileResult ChartLocation(Guid id) { var d = Context.Visits.Where(x => x.Image.Id == id); var result = new List<ShowVisitorOnMapModel>(); foreach (var visit in d) { var geo = visit.Ip.GetGeo(Server); var dm = new ShowVisitorOnMapModel() { created = visit.Time, ip = visit.Ip, referer = visit.Referer, Country = geo.Country, Region = geo.Region, City = geo.City, FullAdress = geo.FillAddress, Lattitude = geo.Latitude, Longitude = geo.Longitude }; result.Add(dm); } var chm = new Dictionary<string, int>(); foreach (var item in result) { if (item.Country == null) item.Country = string.Empty; if (chm.ContainsKey(item.FullAdress)) { chm[item.FullAdress] = chm[item.FullAdress] + 1; } else { chm.Add(item.FullAdress, 1); } } var rt = chm.Select(i => new ChartAdressModel() { Name = i.Key, Count = i.Value }).ToList(); ////////////////////////// var country = rt.Select(x => x.Name); var count = rt.Select(x => x.Count); var mvchart = new System.Web.UI.DataVisualization.Charting.Chart(); mvchart.Width = 800; mvchart.Height = 640; var mySeries = new Series(); mySeries.Points.DataBindXY(country.ToArray(), count.ToArray()); mvchart.Series.Add(mySeries); var area = new ChartArea(); mvchart.ChartAreas.Add(area); mvchart.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep90; mvchart.ChartAreas[0].AxisX.IsLabelAutoFit = true; mvchart.ChartAreas[0].AxisX.LabelStyle.Format = "0.###"; mvchart.ChartAreas[0].AxisX.Maximum = country.Count() + 1; var returnVal = new MemoryStream(); mvchart.SaveImage(returnVal); return File(returnVal.GetBuffer(), @"image/png"); }
protected void Page_Load(object sender, EventArgs e) { //var clbas = aero.GetValues_2d("CLBAS"); //foreach (var alpha in clbas) //{ // var ck = String.Format("{0}", alpha.Key); // Chart1.Series.Add(ck); // Chart1.Series[ck].ChartType = SeriesChartType.Line; // foreach (var vv in alpha.Value) // { // var q = vv.Value; // Chart1.Series[ck].Points.AddXY(vv.Key, vv.Value); // } //} HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output); writer.Write(@"<!DOCTYPE html> <html lang='en'> <head profile='http://www.w3.org/1999/xhtml/vocab'> <title>{0}</title> <link href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css' rel='stylesheet'> </head><body>",aero.Title); writer.Write("<h1>{0}</h1>", aero.Title); writer.Write("<legend>{0}</legend>", aero.SubTitle); int PlotLineThickness = 2; foreach (var axis in aero.Data.GroupBy(xx=>xx.Value.Axis)) { if (!String.IsNullOrEmpty(axis.Key)) writer.Write("<h2>{0}</h2>", axis.Key); //else // writer.Write("<h2>Additional</h2>" ); foreach (var aero_element in axis) { writer.Write("\n"); // if (aero.HasData(aero_element)) // writer.Write("<p style='page-break-before'>\n", aero_element.Key); // writer.Write("<span>{0}</span><div>\n", aero_element.Value.Title); { if (aero_element.Value.IndependentVars.Count == 3) { var table_data_element = aero_element.Value.data.GroupBy(xx => xx.iv3).Select(xx => new { Key = xx.Key, Values = xx }); foreach (var table in table_data_element) { string base_name = String.Format(ChartFileNamePrefix + "_{0}_{1}_{2}.png", axis.Key, aero_element.Key, table.Key).AsValidFilename(); System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth * 3; chart.Height = ChartHeight * 3; chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.BrightPastel; chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; if (!String.IsNullOrEmpty(aero_element.Value.Title)) chart.Titles.Add(new Title(String.Format("{0}", aero_element.Value.Title), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); Title t = new Title(String.Format("{0} ({1},{2},{3}[{4}])", aero_element.Key, aero_element.Value.IndependentVars[0], aero_element.Value.IndependentVars[1], aero_element.Value.IndependentVars[2], table.Key), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); var computeval = aero_element.Value.GetComputeValue(aero); if (!String.IsNullOrEmpty(computeval) && computeval != aero_element.Value.Variable) chart.Titles.Add(new Title(computeval, Docking.Top, new System.Drawing.Font("Trebuchet MS", 10, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/plot_{0}.png", aero_element); chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/{0}", base_name); // chart.Legends.Add("Legend1"); chart.Legends.Add("Legend1"); chart.Legends["Legend1"].Docking = Docking.Bottom; chart.Legends["Legend1"].IsTextAutoFit = false; chart.Legends["Legend1"].BackColor = System.Drawing.Color.Transparent; chart.Legends["Legend1"].Font = new System.Drawing.Font("Trebuchet MS", 11); chart.Legends["Legend1"].Alignment = System.Drawing.StringAlignment.Center; var aero_data_element = table.Values.GroupBy(xx => xx.iv2).Select(xx => new { Key = xx.Key, Values = xx }); foreach (var iv1 in aero_data_element) { var ck = String.Format("{0} {1}", table.Values.First().Parent.IndependentVars[1], iv1.Key); chart.Series.Add(ck); chart.Series[ck].ChartType = SeriesChartType.Line; chart.Series[ck].BorderWidth = PlotLineThickness; //chart.Series[ck].Label = "#VALY"; //chart.Series[ck].LabelForeColor = System.Drawing.Color.Black; foreach (var vv in iv1.Values) { var q = vv.Value; chart.Series[ck].Points.AddXY(vv.iv1, vv.Value); } } // Render chart control chart.Page = this; AddImageToHTML(writer, base_name, aero_element.Key, chart); } } else if (aero_element.Value.IndependentVars.Count == 2) { string base_name = String.Format(ChartFileNamePrefix + "_{0}_{1}_{2}.png", axis.Key, aero_element.Key, aero_element.Value.IndependentVars[0]).AsValidFilename(); var aero_data_element = aero_element.Value.data.GroupBy(xx => xx.iv2).Select(xx => new { Key = xx.Key, Values = xx }); System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth * 3; chart.Height = ChartHeight * 3; chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.BrightPastel; chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; if (!String.IsNullOrEmpty(aero_element.Value.Title)) chart.Titles.Add(new Title(String.Format("{0}", aero_element.Value.Title), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); Title t = new Title(String.Format("{0}({1},{2})", aero_element.Key, aero_element.Value.IndependentVars[0], aero_element.Value.IndependentVars[1]), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); // Title t = new Title(String.Format("{0} (β,α)", aero_element), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); var computeval = aero_element.Value.GetComputeValue(aero); if (!String.IsNullOrEmpty(computeval) && computeval != aero_element.Value.Variable) chart.Titles.Add(new Title(computeval, Docking.Top, new System.Drawing.Font("Trebuchet MS", 10, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/plot_{0}.png", aero_element); chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/{0}", base_name); // chart.Legends.Add("Legend1"); foreach (var alpha in aero_data_element) { var ck = String.Format("{0} {1}", aero_element.Value.IndependentVars[1], alpha.Key); chart.Series.Add(ck); chart.Series[ck].ChartType = SeriesChartType.Line; chart.Series[ck].BorderWidth = PlotLineThickness; //chart.Series[ck].Label = "#VALY"; //chart.Series[ck].LabelForeColor = System.Drawing.Color.Black; foreach (var vv in alpha.Values) { var q = vv.Value; chart.Series[ck].Points.AddXY(vv.iv1, vv.Value); } } chart.Legends.Add("Legend1"); chart.Legends["Legend1"].Docking = Docking.Bottom; chart.Legends["Legend1"].IsTextAutoFit = false; chart.Legends["Legend1"].BackColor = System.Drawing.Color.Transparent; chart.Legends["Legend1"].Font = new System.Drawing.Font("Trebuchet MS", 11); chart.Legends["Legend1"].Alignment = System.Drawing.StringAlignment.Center; // Render chart control chart.Page = this; AddImageToHTML(writer, base_name, aero_element.Key, chart); } else if (aero_element.Value.IndependentVars.Count == 1) { string base_name = String.Format(ChartFileNamePrefix + "_{0}_{1}_{2}.png", axis.Key, aero_element.Key, aero_element.Value.IndependentVars[0]).AsValidFilename(); var aero_data_element = aero_element.Value.data.Select(xx => new { Key = xx.iv1, Value = xx.Value }); if (aero_data_element != null) { System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.BrightPastel; chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; if (!String.IsNullOrEmpty(aero_element.Value.Title)) chart.Titles.Add(new Title(String.Format("{0}", aero_element.Value.Title), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); Title t = new Title(String.Format("{0}({1})", aero_element.Key, aero_element.Value.IndependentVars[0]), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); var computeval = aero_element.Value.GetComputeValue(aero); if (!String.IsNullOrEmpty(computeval) && computeval != aero_element.Value.Variable) chart.Titles.Add(new Title(computeval, Docking.Top, new System.Drawing.Font("Trebuchet MS", 10, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105))); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/f14_aero_{0}.png", aero_element.Key + "_" + aero_element.Value.Description); // chart.Legends.Add("Legend1"); var series = "data"; chart.Series.Add(series); chart.Series[series].ChartType = SeriesChartType.Line; foreach (var q in aero_data_element) { chart.Series[series].Points.AddXY(q.Key, q.Value); } chart.Series[series].BorderWidth = 3; AddImageToHTML(writer, base_name, aero_element.Key, chart); } } } // writer.Write("</div></p>"); } } var compute = aero.GetCompute(); foreach (var axis in compute) { writer.Write("<h3>{0} Coefficient Buildup</h3>", axis.Key[0]+axis.Key.Substring(1).ToLower()); writer.Write("<p>{0}</p>", axis.Value); } if (aero.References.Any()) { writer.Write("<hrule/><h2>References</h3>"); writer.Write("<ol>"); foreach (var re in aero.References) { writer.Write("<li>"); writer.Write("{0}: {1}, {2}, {3}", re.Author, re.Title, re.Id, re.Date); if (!String.IsNullOrEmpty(re.Url)) writer.Write(": <a href='{0}'>{0}</a>", re.Url); writer.Write("</li>"); } writer.Write("</ol>"); } writer.Write("<span class='col-md-6'>"); writer.Write("<h2>Mass and balance</h2>"); writer.Write("<table class='table'>"); writer.Write("<thead>"); output_location_table_header(writer); writer.Write("<tr>"); output_location(writer, aero.AERORP, "Aerodynamic Reference Point (CoP)"); writer.Write("</tr>"); writer.Write("<tr>"); output_location(writer, aero.CG, "Aircraft CG"); writer.Write("</tr>"); writer.Write("</table>"); writer.Write("<table class='table' width='30%'>"); output_location_table_header(writer, "<th>Weight</th>"); writer.Write("<tbody>"); foreach (var g in aero.Mass) { writer.Write("<tr>"); output_location(writer, g.Location, g.Name); writer.Write("<td>{0} {1}</td>", g.weight.Amount, g.weight.Unit); } writer.Write("</span>"); writer.Write("<span class='col-md-4'>"); writer.Write("<h2>Ground Reactions</h2>"); writer.Write("<table class='table' width='30%'>"); output_location_table_header(writer); writer.Write("<tbody>"); foreach (var g in aero.GroundReactions) { writer.Write("<tr>"); output_location(writer, g.Location, g.Name); writer.Write("</tr>"); } writer.Write("</tbody>"); writer.Write("</table>"); writer.Write("</span>"); writer.Write("<span class='col-md-6'>"); writer.Write("<h2>Propulsion</h2>"); writer.Write("<table class='table' width='30%'>"); output_location_table_header(writer, "<th>Feed</th>"); writer.Write("<tbody>"); foreach (var g in aero.Engines) { writer.Write("<tr>"); output_location(writer, g.Location, g.Name); writer.Write("<td>{0}</td>", String.Join(",", g.Feed.Select(xx=>get_tank(aero,xx)))); writer.Write("</tr>"); } writer.Write("</tbody>"); writer.Write("</table>"); writer.Write("</span>"); writer.Write("<span class='col-md-6'>"); writer.Write("<h2>Tanks</h2>"); writer.Write("<table class='table' width='30%'>"); output_location_table_header(writer, "<th class='col-sm-1'>Capacity</th><th class='col-sm-1'>Id</th><th class='col-sm-1'>Priority</th><th>Standpipe</th>"); writer.Write("<tbody>"); foreach (var g in aero.Tanks) { writer.Write("<tr>"); output_location(writer, g.Location, g.Name); writer.Write("<td>{0} {1}</td>", g.Capacity.Amount, g.Capacity.Unit); writer.Write("<td>{0}</td>", g.Id); writer.Write("<td>{0}</td>", g.Priority); if (g.Standpipe != null) writer.Write("<td>{0} {1}</td>", g.Standpipe.Amount, g.Standpipe.Unit); else writer.Write("<td></td>"); writer.Write("</tr>"); } writer.Write("</tbody>"); writer.Write("</table>"); writer.Write("</span>"); writer.Write("</body></html>"); }
protected void Page_Load(object sender, EventArgs e) { //var clbas = aero.GetValues_2d("CLBAS"); //foreach (var alpha in clbas) //{ // var ck = String.Format("{0}", alpha.Key); // Chart1.Series.Add(ck); // Chart1.Series[ck].ChartType = SeriesChartType.Line; // foreach (var vv in alpha.Value) // { // var q = vv.Value; // Chart1.Series[ck].Points.AddXY(vv.Key, vv.Value); // } //} HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output); writer.Write("<h1>F14 Aerodynamics</h1>"); int PlotLineThickness = 2; foreach (var aero_element in aero.GetElements()) { writer.Write("\n"); writer.Write("<h2 style='page-break-before'>{0}</h2>\n", aero.Description(aero_element)); // if (aero.HasData(aero_element)) writer.Write("<p>\n", aero.Description(aero_element)); { if (aero.Is2d(aero_element)) { { string base_name = String.Format("f14_aero_{0}_beta_alpha.png", aero_element.Replace(":", "_")); var aero_data_element = aero.GetValues_2dBetaAlpha(aero_element); System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth * 3; chart.Height = ChartHeight * 3; chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.BrightPastel; chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; Title t = new Title(String.Format("{0} (β,α)", aero_element), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/plot_{0}.png", aero_element); chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/{0}", base_name); // chart.Legends.Add("Legend1"); foreach (var alpha in aero_data_element) { var ck = String.Format("{0}", alpha.Key); chart.Series.Add(ck); chart.Series[ck].ChartType = SeriesChartType.Line; chart.Series[ck].BorderWidth = PlotLineThickness; //chart.Series[ck].Label = "#VALY"; //chart.Series[ck].LabelForeColor = System.Drawing.Color.Black; foreach (var vv in alpha.Value) { var q = vv.Value; chart.Series[ck].Points.AddXY(vv.Key, vv.Value); } } chart.Legends.Add("Legend1"); chart.Legends["Legend1"].Docking = Docking.Bottom; chart.Legends["Legend1"].IsTextAutoFit = false; chart.Legends["Legend1"].BackColor = System.Drawing.Color.Transparent; chart.Legends["Legend1"].Font = new System.Drawing.Font("Trebuchet MS", 11); chart.Legends["Legend1"].Alignment = System.Drawing.StringAlignment.Center; // Render chart control chart.Page = this; AddImageToHTML(writer, base_name, aero_element, chart); } { string base_name = String.Format("f14_aero_{0}_alpha_beta.png", aero_element.Replace(":", "_")); var aero_data_element = aero.GetValues_2dAlphaBeta(aero_element); System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth * 3; chart.Height = ChartHeight * 3; chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; // chart.Palette = ChartColorPalette.BrightPastel; Title t = new Title(String.Format("{0} (α,β)", aero_element), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/{0}", base_name); chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; // chart.Legends.Add("Legend1"); foreach (var alpha in aero_data_element) { var ck = String.Format("{0}", alpha.Key); chart.Series.Add(ck); chart.Series[ck].ChartType = SeriesChartType.Line; chart.Series[ck].BorderWidth = PlotLineThickness; //chart.Series[ck].Label = "#VALY"; //chart.Series[ck].LabelForeColor = System.Drawing.Color.Black; foreach (var vv in alpha.Value) { var q = vv.Value; chart.Series[ck].Points.AddXY(vv.Key, vv.Value); } } chart.Legends.Add("Legend1"); chart.Legends["Legend1"].Docking = Docking.Bottom; chart.Legends["Legend1"].IsTextAutoFit = false; chart.Legends["Legend1"].BackColor = System.Drawing.Color.Transparent; chart.Legends["Legend1"].Font = new System.Drawing.Font("Trebuchet MS", 11); chart.Legends["Legend1"].Alignment = System.Drawing.StringAlignment.Center; // Render chart control AddImageToHTML(writer, base_name, aero_element, chart); } } else { string base_name = String.Format("f14_aero_{0}_alpha.png", aero_element.Replace(":", "_")); var aero_data_element = aero.GetValues_1d(aero_element); if (aero_data_element != null) { System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart(); chart.Width = ChartWidth; chart.Height = ChartHeight; //chart.RenderType = RenderType.ImageTag; var ca1 = chart.ChartAreas.Add("chart"); chart.Palette = ChartColorPalette.BrightPastel; chart.Palette = ChartColorPalette.None; chart.PaletteCustomColors = ChartPalette.AeroPalette;// ChartColorPalette.Bright;//.Excel;//.BrightPastel; Title t = new Title(String.Format("{0} (α)", aero_element), Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); chart.Titles.Add(t); chart.BorderSkin.SkinStyle = BorderSkinStyle.None; //chart.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105); //chart.BorderlineDashStyle = ChartDashStyle.Solid; //chart.BorderWidth = 2; chart.ImageStorageMode = ImageStorageMode.UseImageLocation;// ImageStorageMode.UseHttpHandler; chart.ImageLocation = String.Format("~/f14_aero_{0}.png", aero_element.Replace(":","_")); // chart.Legends.Add("Legend1"); var series = "data"; chart.Series.Add(series); chart.Series[series].ChartType = SeriesChartType.Line; foreach (var q in aero_data_element) { chart.Series[series].Points.AddXY(q.Key, q.Value); } chart.Series[series].BorderWidth = 3; AddImageToHTML(writer, base_name, aero_element, chart); } } } writer.Write("</p>"); } }
//折线图示例 public static Chart DrawLineChartDemo() { List<int> data = Models.StaticModel.createStaticData(); System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart(); Chart2.Width = 600; Chart2.Height = 300; Chart2.RenderType = System.Web.UI.DataVisualization.Charting.RenderType.ImageTag; Chart2.Palette = ChartColorPalette.BrightPastel; Title t = new Title("表格", Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105)); Chart2.Titles.Add(t); Chart2.ChartAreas.Add("Series 1"); // create a couple of series Chart2.Series.Add("Series 1"); Chart2.Series.Add("Series 2"); Chart2.Series["Series 2"].ChartType = SeriesChartType.Line; DataTable dt = new DataTable(); //Add three columns to the DataTable dt.Columns.Add("Date"); dt.Columns.Add("Volume1"); dt.Columns.Add("Volume2"); DataRow dr; //Add rows to the table which contains some random data for demonstration dr = dt.NewRow(); dr["Date"] = "Jan"; dr["Volume1"] = 3731; dr["Volume2"] = 4101; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Date"] = "Feb"; dr["Volume1"] = 6024; dr["Volume2"] = 4324; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Date"] = "Mar"; dr["Volume1"] = 4935; dr["Volume2"] = 2935; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Date"] = "Apr"; dr["Volume1"] = 4466; dr["Volume2"] = 5644; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Date"] = "May"; dr["Volume1"] = 5117; dr["Volume2"] = 5671; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Date"] = "Jun"; dr["Volume1"] = 3546; dr["Volume2"] = 4646; dt.Rows.Add(dr); //设置图表的数据源 Chart2.DataSource = dt; //设置图表Y轴对应项 Chart2.Series["Series 1"].YValueMembers = "Volume1"; Chart2.Series["Series 2"].YValueMembers = "Volume2"; //设置图表X轴对应项 Chart2.Series["Series 1"].XValueMember = "Date"; //绑定数据 Chart2.DataBind(); //// add points to series 1 //foreach (int value in data) //{ // Chart2.Series["Series 1"].Points.AddY(value); //} //// add points to series 2 //foreach (int value in data) //{ // Chart2.Series["Series 2"].Points.AddY(value + 1); //} Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; Chart2.BorderlineWidth = 2; Chart2.BorderColor = System.Drawing.Color.Black; Chart2.BorderlineDashStyle = ChartDashStyle.Solid; Chart2.BorderWidth = 2; Chart2.Legends.Add("Legend1"); return Chart2; }
public void ProcessRequest( HttpContext context ) { SparePartPriceKey key = SparePartPriceKey.Parse(context.Request.QueryString["ID"]); SparePartFranch part = SparePartsDac.Load(key); if (part != null) { Int32? beforeTime = part.BeforeTime; Int32? onTime = part.OnTime; Int32? delay = part.Delay; Int32? nonDelivery = part.NonDelivery; //beforeTime = 100; onTime = 75; delay = 60; nonDelivery = 35; if (beforeTime != null && onTime != null && delay != null && nonDelivery != null) { Chart ChartStat = new System.Web.UI.DataVisualization.Charting.Chart(); //LiteralControl lc = new LiteralControl(); //lc.Text = "123"; //ChartStat.Controls.Add(lc); Title t = new Title(("Рейтинг" + Environment.NewLine + "поставщика"), Docking.Top); t.Font = new Font(t.Font.FontFamily,(float)t.Font.SizeInPoints * (float)1.325); t.Position = new ElementPosition(18, 2, 65, 20); ChartStat.Titles.Add(t); ChartStat.Series.Add(new Series("SeriesStat")); ChartStat.ChartAreas.Add(new ChartArea("ChartAreaStat")); int[] yValues = { (int) beforeTime, (int) onTime, (int) delay, (int) nonDelivery}; string[] xValues = { "Раньше", "Вовремя", "Задержка", "Непоставка" }; ChartStat.Series["SeriesStat"].Points.DataBindXY(xValues, yValues); ChartStat.Series["SeriesStat"].LabelForeColor = Color.FromArgb(0, Color.White); ChartStat.Series["SeriesStat"].Points[0].Color = Color.FromArgb(0, 127, 255); // синий Раньше ChartStat.Series["SeriesStat"].Points[1].Color = Color.FromArgb(47, 229, 107); // зеленый Вовремя ChartStat.Series["SeriesStat"].Points[2].Color = Color.FromArgb(255, 242, 157); // желтый Задержка ChartStat.Series["SeriesStat"].Points[3].Color = Color.FromArgb(254, 192, 192); // красный Непоставка // Set chart type ChartStat.Series["SeriesStat"].ChartType = SeriesChartType.Pie; // Set labels style ChartStat.Series["SeriesStat"]["PieLabelStyle"] = "Inside"; // Enable 3D ChartStat.ChartAreas["ChartAreaStat"].Area3DStyle.Enable3D = true; // Show a 30% perspective ChartStat.ChartAreas["ChartAreaStat"].Area3DStyle.Perspective = 30; // Set the X Angle to 70 ChartStat.ChartAreas["ChartAreaStat"].Area3DStyle.Inclination = 70; // Set the Y Angle to -2 ChartStat.ChartAreas["ChartAreaStat"].Area3DStyle.Rotation = -2; ChartStat.ChartAreas["ChartAreaStat"].Position = new ElementPosition(16, 5, 68, 68); System.Web.UI.DataVisualization.Charting.Legend l = new Legend("LegendStat"); //l.TitleFont = new Font(); l.Title = "Указанное время доставки:" + Environment.NewLine + part.DisplayDeliveryDaysMin.ToString() + " - " + part.DisplayDeliveryDaysMax.ToString() + " (в рабочих днях)"; l.TitleAlignment = StringAlignment.Center; l.TitleFont = new Font(l.TitleFont.FontFamily, l.TitleFont.SizeInPoints * (float) 1.15); ChartStat.Legends.Add(l); LegendCellColumn firstColumn = new LegendCellColumn(); firstColumn.ColumnType = LegendCellColumnType.SeriesSymbol; ChartStat.Legends["LegendStat"].CellColumns.Add(firstColumn); LegendCellColumn secondColumn = new LegendCellColumn(); secondColumn.ColumnType = LegendCellColumnType.Text; secondColumn.Text = "#LEGENDTEXT"; secondColumn.Alignment = ContentAlignment.MiddleLeft; secondColumn.HeaderBackColor = Color.WhiteSmoke; ChartStat.Legends["LegendStat"].CellColumns.Add(secondColumn); LegendCellColumn thirdColumn = new LegendCellColumn(); thirdColumn.ColumnType = LegendCellColumnType.Text; thirdColumn.Text = "#PERCENT{0#%}"; //thirdColumn.Text = String.Format({0:#%},thirdColumn.Text); thirdColumn.Alignment = ContentAlignment.MiddleRight; thirdColumn.HeaderBackColor = Color.WhiteSmoke; ChartStat.Legends["LegendStat"].CellColumns.Add(thirdColumn); ChartStat.Legends[0].Enabled = true; //(34, 63, 40, 30) ChartStat.Legends[0].Position = new ElementPosition(22, 58, 60, 44); context.Response.ContentType = "image/bmp"; context.Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate); using (System.IO.MemoryStream imageStream = new System.IO.MemoryStream()) { ChartStat.SaveImage(imageStream, ChartImageFormat.Bmp); context.Response.BinaryWrite(imageStream.ToArray()); } context.Response.End(); } } else { throw new HttpException((int)HttpStatusCode.NotFound, "Not Found"); } }