public ColumnFrequency() { InitializeComponent(); //hScrollBar_Parameter1.Value = 2; //Graphics Graphic = new Graphics(); Bandwidth = double.Parse(textBox_Bandwidth.Text); //if (Form_Parater.flag == 0) return; //int rows = 1; //int cols = 1; //string[,] str = new string[1, 1]; Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; Max_Value = Double.MinValue; Min_Value = Double.MaxValue; for (int i = 1; i < rows; i++) { if (double.Parse(str[i, 0]) > Max_Value) { Max_Value = double.Parse(str[i, 0]); } if (double.Parse(str[i, 0]) < Min_Value) { Min_Value = double.Parse(str[i, 0]); } } int Nrows = Convert.ToInt32((Max_Value - Min_Value) / Bandwidth + 2); double[,] data = new double[Nrows, 1]; int idx = 0; for (int i = 1; i < rows; i++) { idx = Convert.ToInt32((double.Parse(str[i, 0]) - Min_Value) / Bandwidth); data[idx, 0] = data[idx, 0] + 1; } data[Nrows - 2, 0] = data[Nrows - 2, 0] + data[Nrows - 1, 0]; double[,] x = new double[Nrows - 1, 1]; string[,] label = new string[Nrows - 1, 1]; for (int i = 0; i < Nrows - 1; i++) { label[i, 0] = "[" + Convert.ToString(Math.Floor((i * Bandwidth + Min_Value) * 100) / 100) + "," + Convert.ToString(Math.Floor(((i + 1) * Bandwidth + Min_Value) * 100) / 100) + ")"; //((Excel.Range)worksheet.Cells[start_row + 1 + i, start_col + cols + 1]).Value2 = label[i]; //((Excel.Range)worksheet.Cells[start_row + 1 + i, start_col + cols + 3]).Value2 = data[i]; x[i, 0] = i * Bandwidth + Min_Value; } ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]).Value2 = "X bandwidth"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]).Value2 = "X axis"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 3]).Value2 = "Y axis"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 1]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = label; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 2]; range = worksheet.get_Range(c1, c2); range.Value = x; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 3]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 3]; range = worksheet.get_Range(c1, c2); range.Value = data; ((Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 3]).Value2 = "";; string ChartOrder = "FrequencyColumn" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(300, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; c1 = (Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 3]; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlColumnClustered; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); if (series.Count == 2) { Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); } Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 2]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 3]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 3]; Sseries.Values = worksheet.get_Range(c1, c2); Sseries.Format.Fill.Visible = Office.MsoTriState.msoTrue; Sseries.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255, 88, 180, 13).ToArgb(); Sseries.Format.Line.Visible = Office.MsoTriState.msoTrue; Sseries.Format.Line.ForeColor.RGB = System.Drawing.Color.FromArgb(255, 0, 0, 0).ToArgb(); Excel.ChartGroup group = (Excel.ChartGroup)chart.ChartGroups(1); group.GapWidth = 0; chart.HasLegend = false; chart.HasTitle = false; worksheet.Activate(); }
public CurveLOESS() { InitializeComponent(); //int rows = 1; //int cols = 1; //string[,] str = new string[1, 1]; Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; Y = new double[rows - 1]; X = new double[rows - 1]; int j; for (j = 1; j < rows; j++) { X[j - 1] = double.Parse(str[j, 0]); Y[j - 1] = double.Parse(str[j, 1]); } Span = long.Parse(textBox_Bandwidth.Text); double[] yLoess = new double[rows - 1]; QLOESS(ref Y, ref X, ref yLoess, Span); double[,] data = new double[rows - 1, 1]; for (j = 1; j < rows; j++) { data[j - 1, 0] = yLoess[j - 1]; } ((Excel.Range)worksheet.Cells[start_row, start_col + cols]).Value2 = "Smooth Y"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + 1 + rows - 2, start_col + cols]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = data; c1 = (Excel.Range)worksheet.Cells[start_row, start_col]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols]; string ChartOrder = "CurveLOESS" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(250, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); Excel.Series Sseries2 = series.Item(2); Sseries2.Format.Line.Visible = Office.MsoTriState.msoFalse; Sseries2.Format.Fill.Solid(); Sseries2.Format.Fill.Visible = Office.MsoTriState.msoCTrue; //Sseries2.Format.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 255, 255, 255).ToArgb(); //Sseries2.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255,229, 184,0).ToArgb(); //Sseries2.Format.Fill.Transparency = 0.6F; Sseries2.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleCircle; Sseries2.MarkerSize = 6; Excel.Series Sseries3 = series.Item(3); Sseries3.Format.Fill.Visible = Office.MsoTriState.msoFalse; Sseries3.Format.Line.Visible = Office.MsoTriState.msoTrue; Sseries3.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleNone; //Sseries3.Format.Line.ForeColor.RGB= System.Drawing.Color.FromArgb(255, 248, 118, 109).ToArgb(); Sseries3.Format.Line.Weight = 1.25F; Excel.Series Sseries1 = series.Item(1); Sseries1.Delete(); }
private void textBox_Bandwidth_TextChanged(object sender, EventArgs e) { if (textBox_Bandwidth.Text == "") { return; } Bandwidth = double.Parse(textBox_Bandwidth.Text);; if (Bandwidth == 0) { return; } int Nrows = Convert.ToInt32((Max_Value - Min_Value) / Bandwidth + 2); double[,] data = new double[Nrows, 1]; int idx = 0; for (int i = 1; i < rows; i++) { idx = Convert.ToInt32((double.Parse(str[i, 0]) - Min_Value) / Bandwidth); data[idx, 0] = data[idx, 0] + 1; } data[Nrows - 2, 0] = data[Nrows - 2, 0] + data[Nrows - 1, 0]; double[,] x = new double[Nrows - 1, 1]; string[,] label = new string[Nrows - 1, 1]; for (int i = 0; i < Nrows - 1; i++) { label[i, 0] = "[" + Convert.ToString(Math.Floor((i * Bandwidth + Min_Value) * 100) / 100) + "," + Convert.ToString(Math.Floor(((i + 1) * Bandwidth + Min_Value) * 100) / 100) + ")"; //((Excel.Range)worksheet.Cells[start_row + 1 + i, start_col + cols + 1]).Value2 = label[i]; //((Excel.Range)worksheet.Cells[start_row + 1 + i, start_col + cols + 3]).Value2 = data[i]; x[i, 0] = i * Bandwidth + Min_Value; } ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]).Value2 = "X bandwidth"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]).Value2 = "X axis"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 3]).Value2 = "Y axis"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 1]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = label; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 2]; range = worksheet.get_Range(c1, c2); range.Value = x; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 3]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 3]; range = worksheet.get_Range(c1, c2); range.Value = data; ((Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 3]).Delete();; c1 = (Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 3]; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 2]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 3]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows - 1, start_col + cols + 3]; Sseries.Values = worksheet.get_Range(c1, c2); chart.Refresh(); worksheet.Activate(); }
private void DrawBubbleLegend(Excel.Chart chart) { var revenues = new double[] { 200, 400, 600, 800, 1000 }; const double revenueIncrement = 200; var zeroArray = revenues.Select(x => x).ToArray(); var bubbleSizes = revenues.Select(x => GetBubbleSizeFromRevenue(x - revenueIncrement / 2)).ToArray(); Excel.Series dummyBubbleSeries = chart.SeriesCollection().NewSeries(); dummyBubbleSeries.XValues = zeroArray; dummyBubbleSeries.Values = zeroArray; dummyBubbleSeries.BubbleSizes = bubbleSizes; var bubbleWidths = new List <float>(); foreach (Excel.Point bubble in dummyBubbleSeries.Points()) { bubbleWidths.Add((float)bubble.Width); } var bubbleLegendNeededSpace = bubbleWidths.Max() + BubbleLegendTop; chart.PlotArea.Height -= bubbleLegendNeededSpace; float currentLeft = BubbleLegendLeft + RevenueTitleLength; for (var i = 0; i < bubbleWidths.Count; i++) { var bubbleWidth = bubbleWidths[i]; var topMargin = (float)chart.PlotArea.Height + BubbleLegendTop + bubbleWidths.Max() / 2 - bubbleWidth / 2; var oval = chart.Shapes.AddShape(MsoAutoShapeType.msoShapeOval, currentLeft, topMargin, bubbleWidth, bubbleWidth); oval.Fill.ForeColor.RGB = (int)Excel.XlRgbColor.rgbWhite; oval.Line.ForeColor.RGB = (int)Excel.XlRgbColor.rgbBlack; var label = chart.Shapes.AddLabel(MsoTextOrientation.msoTextOrientationHorizontal, currentLeft + bubbleWidth + BubbleLegendLabelMargin, topMargin + bubbleWidth / 2 - RevenueTextLabelHeight / 2, RevenueTextLabelLength, RevenueTextLabelHeight); var revenueText = string.Empty; if (i == 0) { revenueText = "<" + revenues[i]; } else if (i == revenues.Length - 1) { revenueText = ">" + revenues[i - 1]; } else { revenueText = revenues[i - 1] + "-" + revenues[i]; } label.TextFrame.Characters().Text = revenueText; currentLeft += bubbleWidth + RevenueTextLabelLength + BubbleLegendLabelMargin * 2; } var revenueLabel = chart.Shapes.AddLabel(MsoTextOrientation.msoTextOrientationHorizontal, BubbleLegendLeft, BubbleLegendTop + bubbleWidths.Max() / 2 + (float)chart.PlotArea.Height - RevenueTextLabelHeight / 2, RevenueTitleLength, RevenueTextLabelHeight); revenueLabel.TextFrame.Characters().Text = "Turnover kkr:"; dummyBubbleSeries.Delete(); }
public ColumnColor() { InitializeComponent(); Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row, start_col]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols - 2]; string ChartOrder = "ColorColumn" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(250, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlColumnClustered; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); if (series.Count == 2) { Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); } Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + 1]; Sseries.Values = worksheet.get_Range(c1, c2); Excel.Point point; int[] HSV0 = new int[3]; RGB0 = System.Drawing.Color.FromArgb(255, 96, 157, 202); System.Drawing.Color RGB1 = System.Drawing.Color.FromArgb(255, 96, 157, 202); Graphic.RGB2HSV(RGB0, ref HSV0); Max_Value = Double.MinValue; Min_Value = Double.MaxValue; for (int i = 1; i < rows; i++) { if (double.Parse(str[i, 2]) > Max_Value) { Max_Value = double.Parse(str[i, 1]); } if (double.Parse(str[i, 2]) < Min_Value) { Min_Value = double.Parse(str[i, 1]); } } int[] HSV = new int[3]; HSV0.CopyTo(HSV, 0); double ratio; Hrange = double.Parse(textBox_Bandwidth.Text); for (int i = 1; i < rows; i++) { point = (Excel.Point)Sseries.Points(i); point.Format.Fill.Solid(); point.Format.Fill.Visible = Office.MsoTriState.msoCTrue; point.Format.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 229, 229, 229).ToArgb(); ratio = (double.Parse(str[i, 2]) - Min_Value) / (Max_Value - Min_Value); HSV[2] = HSV0[2] + Convert.ToInt32(Hrange * (ratio - 0.5)); Graphic.HSV2RGB(ref RGB1, HSV); point.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255, RGB1.B, RGB1.G, RGB1.R).ToArgb(); point.Format.Fill.Transparency = 0.0F; } //Sseries.MarkerBackgroundColor = System.Drawing.Color.FromArgb(255, 77, 175, 74).ToArgb(); //Sseries.MarkerForegroundColor = System.Drawing.Color.FromArgb(255, 77, 175, 74).ToArgb(); Sseries.Format.Line.Visible = Office.MsoTriState.msoCTrue; Sseries.Format.Line.ForeColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb(); Sseries.Format.Line.Weight = 0.75F; Excel.ChartGroup group = (Excel.ChartGroup)chart.ChartGroups(1); group.GapWidth = 0; chart.HasLegend = false; chart.HasTitle = false; //chart.ChartTitle.Delete(); worksheet.Activate(); }
/*'*************************************************************** * 'FFT0 数组下标以0开始 FFT1 数组下标以1开始 * 'AR() 数据实部 AI() 数据虚部 * 'N 数据点数,为2的整数次幂 * 'NI 变换方向 1为正变换,-1为反变换 * '*************************************************************** */ private void Form_Fourier_Load(object sender, EventArgs e) { Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; //double[] FFTProjectionArray = new double[rows - 1]; double[,] NewFFTProjectionArray = new double[rows - 1, 1]; //store the projection curve of FFT double TwoTime = 0; double TwoResult = rows - 1; while (TwoResult > 1) { TwoResult = TwoResult / 2; TwoTime = TwoTime + 1; } Nrows = Convert.ToInt32(Math.Pow(2.0, TwoTime)); double[] AR = new double[Nrows]; //double[] NewAR = new double[Nrows]; for (int j = 1; j < rows; j++) { //FFTProjectionArray[j - 1] = double.Parse(str[j, 1]); AR[j - 1] = double.Parse(str[j, 1]); } double[] AI = new double[Nrows]; FFT0(ref AR, ref AI, Nrows, 1); Span = double.Parse(textBox_Bandwidth.Text); comboBox_FourierMethod.Text = "Low Pass"; for (int j = Convert.ToInt32(rows * Span) + 1; j < Nrows; j++) { AR[j] = 0; AI[j] = 0; } FFT0(ref AR, ref AI, Nrows, -1); for (int j = 1; j < rows; j++) { NewFFTProjectionArray[j - 1, 0] = AR[j - 1]; } ((Excel.Range)worksheet.Cells[start_row, start_col + cols]).Value2 = "Smooth Y"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + 1 + rows - 2, start_col + cols]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = NewFFTProjectionArray; //*******************************************************************************************8 c1 = (Excel.Range)worksheet.Cells[start_row, start_col]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols]; string ChartOrder = "CurveFourier" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(250, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); Excel.Series Sseries2 = series.Item(2); Sseries2.Format.Line.Visible = Office.MsoTriState.msoFalse; Sseries2.Format.Fill.Solid(); Sseries2.Format.Fill.Visible = Office.MsoTriState.msoCTrue; //Sseries2.Format.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 255, 255, 255).ToArgb(); //Sseries2.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255,229, 184,0).ToArgb(); //Sseries2.Format.Fill.Transparency = 0.6F; Sseries2.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleCircle; Sseries2.MarkerSize = 6; Excel.Series Sseries3 = series.Item(3); Sseries3.Format.Fill.Visible = Office.MsoTriState.msoFalse; Sseries3.Format.Line.Visible = Office.MsoTriState.msoTrue; Sseries3.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleNone; //Sseries3.Format.Line.ForeColor.RGB= System.Drawing.Color.FromArgb(255, 248, 118, 109).ToArgb(); Sseries3.Format.Line.Weight = 1.25F; Excel.Series Sseries1 = series.Item(1); Sseries1.Delete(); }
public DensityCurve() { InitializeComponent(); Bandwidth = double.Parse(textBox_Bandwidth.Text); Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; Max_Value = Double.MinValue; Min_Value = Double.MaxValue; for (int i = 1; i < rows; i++) { if (double.Parse(str[i, 0]) > Max_Value) { Max_Value = double.Parse(str[i, 0]); } if (double.Parse(str[i, 0]) < Min_Value) { Min_Value = double.Parse(str[i, 0]); } } double Step = Bandwidth / Nstep; int Nrows = Convert.ToInt32((Max_Value - Min_Value) / Step + 2); double[,] data = new double[Nrows, 1]; double[,] x = new double[Nrows, 1]; double tempx; for (int i = 0; i < Nrows; i++) { x[i, 0] = i * Step + Min_Value; for (int j = 1; j < rows; j++) { tempx = (x[i, 0] - double.Parse(str[j, 0])) / Bandwidth; data[i, 0] = data[i, 0] + 1 / ((rows - 1) * Bandwidth) * Math.Exp(-tempx * tempx / 2) / Math.Sqrt(2 * 3.124259); } } ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]).Value2 = "X axis"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]).Value2 = "Y axis"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 1]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = x; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; range = worksheet.get_Range(c1, c2); range.Value = data; string ChartOrder = "DensityCurve" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(300, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; c1 = (Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlArea; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 1]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; Sseries.Values = worksheet.get_Range(c1, c2); chart.HasLegend = false; chart.HasTitle = false; worksheet.Activate(); }
private void textBox_Bandwidth_TextChanged(object sender, EventArgs e) { if (textBox_Bandwidth.Text == "") { return; } Bandwidth = double.Parse(textBox_Bandwidth.Text);; if (Bandwidth == 0) { return; } double Step = Bandwidth / Nstep; int Nrows = Convert.ToInt32((Max_Value - Min_Value) / Step + 2); double[,] data = new double[Nrows, 1]; double[,] x = new double[Nrows, 1]; double tempx; for (int i = 0; i < Nrows; i++) { x[i, 0] = i * Step + Min_Value; for (int j = 1; j < rows; j++) { tempx = (x[i, 0] - double.Parse(str[j, 0])) / Bandwidth; data[i, 0] = data[i, 0] + 1 / ((rows - 1) * Bandwidth) * Math.Exp(-tempx * tempx / 2) / Math.Sqrt(2 * 3.124259); } } ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]).Value2 = "X axis"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 2]).Value2 = "Y axis"; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 1]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = x; c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; range = worksheet.get_Range(c1, c2); range.Value = data; c1 = (Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); //chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlArea; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 1]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 2]; c2 = (Excel.Range)worksheet.Cells[start_row + Nrows, start_col + cols + 2]; Sseries.Values = worksheet.get_Range(c1, c2); chart.Refresh(); worksheet.Activate(); }
public DensityScatter() { InitializeComponent(); //hScrollBar_Parameter1.Value = 2; //Graphics Graphic = new Graphics(); Bandwidth = double.Parse(textBox_Bandwidth.Text); //if (Form_Parater.flag == 0) return; //int rows = 1; //int cols = 1; //string[,] str = new string[1, 1]; Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; int i; ((Excel.Range)worksheet.Cells[start_row, start_col + cols]).Value2 = "X-axis Value"; ((Excel.Range)worksheet.Cells[start_row, start_col + cols + 1]).Value2 = "Y-axis Value"; double Pdensity = Bandwidth * 100; double Maxtemp = 1000; double[,] data = new double[rows, 2]; for (i = 1; i < rows; i++) { data[i - 1, 0] = Math.Floor(double.Parse(str[i, 0]) * Maxtemp / Pdensity) * Pdensity / Maxtemp; data[i - 1, 1] = Math.Floor(double.Parse(str[i, 1]) * Maxtemp / Pdensity) * Pdensity / Maxtemp; //((Excel.Range)worksheet.Cells[start_row + i, start_col + cols]).Value2 = Math.Floor(double.Parse(str[i, 0]) * Maxtemp / Pdensity) * Pdensity / Maxtemp; //((Excel.Range)worksheet.Cells[start_row + i, start_col + cols + 1]).Value2 = Math.Floor(double.Parse(str[i, 1]) * Maxtemp / Pdensity) * Pdensity / Maxtemp; } Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols + cols - 1]; Excel.Range range = worksheet.get_Range(c1, c2); range.Value = data; string ChartOrder = "DensityScatter" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(250, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; c1 = (Excel.Range)worksheet.Cells[start_row, start_col + cols]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols + cols - 1]; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); if (series.Count == 2) { Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); } Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + cols + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + cols + 1]; Sseries.Values = worksheet.get_Range(c1, c2); Sseries.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleCircle; //Sseries.Format.Line.Visible = Office.MsoTriState.msoFalse; Sseries.MarkerSize = 5; Sseries.MarkerBackgroundColor = System.Drawing.Color.FromArgb(255, 109, 118, 248).ToArgb(); Sseries.MarkerForegroundColor = System.Drawing.Color.FromArgb(255, 109, 118, 248).ToArgb(); //Sseries.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse; Sseries.Format.Fill.Solid(); Sseries.Format.Fill.Visible = Office.MsoTriState.msoCTrue; Sseries.Format.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 255, 255, 255).ToArgb(); Sseries.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255, 109, 118, 248).ToArgb(); Sseries.Format.Fill.Transparency = 0.9F; worksheet.Activate(); }
public BubbleSquare() { InitializeComponent(); ratio = double.Parse(textBox_Bandwidth.Text); Graphic.RangeData(ref str, ref rows, ref cols); worksheet = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet); Excel.Range activecells = Globals.ThisAddIn.Application.ActiveCell; start_col = activecells.Column; start_row = activecells.Row; Excel.Range c1 = (Excel.Range)worksheet.Cells[start_row, start_col]; Excel.Range c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + 1]; string ChartOrder = "SquareBubble" + Convert.ToString(Nchart); chart = worksheet.Controls.AddChart(250, 50, 450, 400, ChartOrder); Nchart = Nchart + 1; chart.SetSourceData(worksheet.get_Range(c1, c2), Excel.XlRowCol.xlColumns); chart.ChartType = Excel.XlChartType.xlXYScatter; Excel.SeriesCollection series = (Excel.SeriesCollection)chart.SeriesCollection(); if (series.Count == 2) { Excel.Series Sseries2 = series.Item(2); Sseries2.Delete(); } Excel.Series Sseries = series.Item(1); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col]; Sseries.XValues = worksheet.get_Range(c1, c2); c1 = (Excel.Range)worksheet.Cells[start_row + 1, start_col + 1]; c2 = (Excel.Range)worksheet.Cells[start_row + rows - 1, start_col + 1]; Sseries.Values = worksheet.get_Range(c1, c2); Excel.Point point; //double ratio = 42; int SquareSize; //((Excel.Range)worksheet.Cells[Graphic.start_row, Graphic.start_col + 3]).Value2 = "Square Size"; Max_size = Double.MinValue; Min_size = Double.MaxValue; int i; for (i = 1; i < rows; i++) { if (double.Parse(str[i, 2]) > Max_size) { Max_size = double.Parse(str[i, 2]); } if (double.Parse(str[i, 2]) < Min_size) { Min_size = double.Parse(str[i, 2]); } } Max_size = Math.Sqrt(Max_size); Min_size = Math.Sqrt(Min_size); //int[,] PointSize = new int[Graphic.rows - 1, 1]; for (i = 1; i < rows; i++) { point = (Excel.Point)Sseries.Points(i); //SquareSize = (int)((Math.Sqrt(double.Parse(str[i, 2])) - Min_size));// / (Max_size-Min_size) * ratio) + 2; SquareSize = (int)((Math.Sqrt(double.Parse(str[i, 2])) / Max_size * ratio) + 2); //PointSize[i - 1, 0] = SquareSize; //((Excel.Range)worksheet.Cells[Graphic.start_row + i, Graphic.start_col + 3]).Value2 = SquareSize; point.MarkerSize = SquareSize; } Sseries.MarkerBackgroundColor = System.Drawing.Color.FromArgb(255, 77, 175, 74).ToArgb(); Sseries.MarkerForegroundColor = System.Drawing.Color.FromArgb(255, 77, 175, 74).ToArgb(); Sseries.Format.Fill.Solid(); Sseries.Format.Fill.Visible = Office.MsoTriState.msoCTrue; Sseries.Format.Fill.BackColor.RGB = System.Drawing.Color.FromArgb(255, 229, 229, 229).ToArgb(); Sseries.Format.Fill.ForeColor.RGB = System.Drawing.Color.FromArgb(255, 77, 175, 74).ToArgb(); Sseries.Format.Fill.Transparency = 0.3F; Sseries.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleSquare; //Rggplot2(); chart.HasLegend = false; chart.HasTitle = false; //chart.ChartTitle.Delete(); worksheet.Activate(); }