Example #1
0
 public override void ConfigureSeriesType(MSCHART.Chart chart)
 {
     foreach (var ser in chart.Series)
     {
         ser.ChartType = GetSeriesChartType();
     }
 }
Example #2
0
        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;
            }
        }
Example #3
0
        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++;
            }
        }
Example #4
0
 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();
         }
     }
 }
Example #5
0
 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);
 }
Example #6
0
        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);
        }
Example #8
0
        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";
            }
        }
Example #9
0
 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;
        }
Example #11
0
        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++;
            }
        }
Example #12
0
        /// <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);
        }
Example #13
0
 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++;
         }
     }
 }
Example #14
0
        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++;
            }
        }
Example #15
0
        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";
            }
        }
Example #16
0
        }//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
Example #17
0
        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);
        }
Example #18
0
 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;
 }
Example #20
0
 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;
     }
 }
Example #21
0
 public DailyWeightChartBuilder(IEnumerable <DailyWeight> dailyWeights, Chart chart)
     : base(chart, 1)
 {
     _dailyWeights = dailyWeights;
     AutoScale     = false;
     MinimumYScale = 400;
     MaximumYScale = 400;
 }
Example #22
0
 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);
 }
Example #23
0
        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
Example #24
0
        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);
            }
        }
Example #25
0
        //饼状图示例
        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);
        }
Example #26
0
 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));
        }
Example #28
0
        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
        }
Example #29
0
        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;
        }
Example #30
0
        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();
        }
Example #31
0
        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);
        }
Example #32
0
 /// <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;
        }
Example #34
0
 /// <summary>
 /// Construct a ChartDataTableHelper instance.
 /// </summary>
 public ChartDataTableHelper()
 {
     ChartObj = null;
     ChartAreas = new ArrayList();
 }
Example #35
0
        /// <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;
        }
Example #36
0
        /// <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");
            }
        }
Example #38
0
        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;
        }
Example #40
0
 public ChartControl(System.Web.UI.DataVisualization.Charting.Chart chart)
 {
     this.Chart1 = chart;
 }
Example #41
0
        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");
        }
Example #42
0
        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");
        }
Example #43
0
        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>");
        }
Example #44
0
        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");
            }
        }