public void DrawLineAndMarkers( string title, IEnumerable x, IEnumerable y, Models.Graph.Axis.AxisType xAxisType, Models.Graph.Axis.AxisType yAxisType, Color colour, Models.Graph.Series.LineType lineType, Models.Graph.Series.MarkerType markerType, bool showOnLegend) { if (x != null && y != null) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.OnHoverOverPoint += OnHoverOverPoint; if (showOnLegend) { series.Title = title; } series.Color = ConverterExtensions.ToOxyColor(colour); series.ItemsSource = this.PopulateDataPointSeries(x, y, xAxisType, yAxisType); series.XAxisKey = xAxisType.ToString(); series.YAxisKey = yAxisType.ToString(); series.CanTrackerInterpolatePoints = false; bool filled = false; string oxyMarkerName = markerType.ToString(); if (oxyMarkerName.StartsWith("Filled")) { oxyMarkerName = oxyMarkerName.Remove(0, 6); filled = true; } // Line type. LineStyle oxyLineType; if (Enum.TryParse <LineStyle>(lineType.ToString(), out oxyLineType)) { series.LineStyle = oxyLineType; } // Marker type. MarkerType type; if (Enum.TryParse <MarkerType>(oxyMarkerName, out type)) { series.MarkerType = type; } series.MarkerSize = 7.0; series.MarkerStroke = ConverterExtensions.ToOxyColor(colour); if (filled) { series.MarkerFill = ConverterExtensions.ToOxyColor(colour); series.MarkerStroke = OxyColors.White; } this.plot1.Model.Series.Add(series); } }
public void DrawLineAndMarkers( string title, IEnumerable x, IEnumerable y, Models.Graph.Axis.AxisType xAxisType, Models.Graph.Axis.AxisType yAxisType, Color colour, Models.Graph.LineType lineType, Models.Graph.MarkerType markerType, bool showOnLegend) { if (x != null && y != null) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.OnHoverOverPoint += OnHoverOverPoint; if (showOnLegend) series.Title = title; series.Color = ConverterExtensions.ToOxyColor(colour); series.ItemsSource = this.PopulateDataPointSeries(x, y, xAxisType, yAxisType); series.XAxisKey = xAxisType.ToString(); series.YAxisKey = yAxisType.ToString(); series.CanTrackerInterpolatePoints = false; bool filled = false; string oxyMarkerName = markerType.ToString(); if (oxyMarkerName.StartsWith("Filled")) { oxyMarkerName = oxyMarkerName.Remove(0, 6); filled = true; } // Line type. LineStyle oxyLineType; if (Enum.TryParse<LineStyle>(lineType.ToString(), out oxyLineType)) { series.LineStyle = oxyLineType; } // Marker type. OxyPlot.MarkerType type; if (Enum.TryParse<OxyPlot.MarkerType>(oxyMarkerName, out type)) { series.MarkerType = type; } series.MarkerSize = 7.0; series.MarkerStroke = ConverterExtensions.ToOxyColor(colour); if (filled) { series.MarkerFill = ConverterExtensions.ToOxyColor(colour); series.MarkerStroke = OxyColors.White; } this.plot1.Model.Series.Add(series); } }
private void SetupGraphs() { double[] x = { 0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6 }; try { pAboveGround.Model.Axes.Clear(); pAboveGround.Model.Series.Clear(); pBelowGround.Model.Axes.Clear(); pBelowGround.Model.Series.Clear(); pAboveGround.Model.Title = "Above Ground"; pAboveGround.Model.PlotAreaBorderColor = OxyColors.White; pAboveGround.Model.LegendBorder = OxyColors.Transparent; LinearAxis agxAxis = new LinearAxis(); agxAxis.Title = "Multiple of Tree Height"; agxAxis.AxislineStyle = LineStyle.Solid; agxAxis.AxisDistance = 2; agxAxis.Position = AxisPosition.Top; LinearAxis agyAxis = new LinearAxis(); agyAxis.Title = "%"; agyAxis.AxislineStyle = LineStyle.Solid; agyAxis.AxisDistance = 2; Utility.LineSeriesWithTracker seriesShade = new Utility.LineSeriesWithTracker(); List <DataPoint> pointsShade = new List <DataPoint>(); DataRow rowShade = table.Rows[0]; DataColumn col = table.Columns[0]; double[] yShade = new double[table.Columns.Count - 1]; pAboveGround.Model.Axes.Add(agxAxis); pAboveGround.Model.Axes.Add(agyAxis); for (int i = 1; i < table.Columns.Count; i++) { if (rowShade[i].ToString() == "") { return; } yShade[i - 1] = Convert.ToDouble(rowShade[i]); } for (int i = 0; i < x.Length; i++) { pointsShade.Add(new DataPoint(x[i], yShade[i])); } seriesShade.Title = "Shade"; seriesShade.ItemsSource = pointsShade; pAboveGround.Model.Series.Add(seriesShade); } //don't draw the series if the format is wrong catch (FormatException) { pBelowGround.Model.Series.Clear(); } /////////////// Below Ground try { pBelowGround.Model.Title = "Below Ground"; pBelowGround.Model.PlotAreaBorderColor = OxyColors.White; pBelowGround.Model.LegendBorder = OxyColors.Transparent; LinearAxis bgxAxis = new LinearAxis(); LinearAxis bgyAxis = new LinearAxis(); bgyAxis.Position = AxisPosition.Left; bgxAxis.Position = AxisPosition.Top; bgyAxis.Title = "Depth (mm)"; bgxAxis.Title = "Root Length Density (cm/cm3)"; bgxAxis.Minimum = 0; bgxAxis.MinorTickSize = 0; bgxAxis.AxislineStyle = LineStyle.Solid; bgxAxis.AxisDistance = 2; pBelowGround.Model.Axes.Add(bgxAxis); bgyAxis.StartPosition = 1; bgyAxis.EndPosition = 0; bgyAxis.MinorTickSize = 0; bgyAxis.AxislineStyle = LineStyle.Solid; pBelowGround.Model.Axes.Add(bgyAxis); for (int i = 1; i < table.Columns.Count; i++) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.Title = table.Columns[i].ColumnName; double[] data = new double[table.Rows.Count - 4]; for (int j = 4; j < table.Rows.Count; j++) { data[j - 4] = Convert.ToDouble(table.Rows[j].Field <string>(i)); } List <DataPoint> points = new List <DataPoint>(); for (int j = 0; j < data.Length; j++) { points.Add(new DataPoint(data[j], SoilMidpoints[j])); } series.ItemsSource = points; pBelowGround.Model.Series.Add(series); } } //don't draw the series if the format is wrong catch (FormatException) { pBelowGround.Model.Series.Clear(); } finally { pAboveGround.InvalidatePlot(true); pBelowGround.InvalidatePlot(true); } }
public void DrawLineAndMarkers( string title, IEnumerable x, IEnumerable y, Models.Graph.Axis.AxisType xAxisType, Models.Graph.Axis.AxisType yAxisType, Color colour, Models.Graph.LineType lineType, Models.Graph.MarkerType markerType, Models.Graph.LineThicknessType lineThickness, Models.Graph.MarkerSizeType markerSize, bool showOnLegend) { if (x != null && y != null) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.OnHoverOverPoint += OnHoverOverPoint; if (showOnLegend) { series.Title = title; } else { series.ToolTip = title; } series.Color = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); series.ItemsSource = this.PopulateDataPointSeries(x, y, xAxisType, yAxisType); series.XAxisKey = xAxisType.ToString(); series.YAxisKey = yAxisType.ToString(); series.CanTrackerInterpolatePoints = false; bool filled = false; string oxyMarkerName = markerType.ToString(); if (oxyMarkerName.StartsWith("Filled")) { oxyMarkerName = oxyMarkerName.Remove(0, 6); filled = true; } // Line type. LineStyle oxyLineType; if (Enum.TryParse <LineStyle>(lineType.ToString(), out oxyLineType)) { series.LineStyle = oxyLineType; if (series.LineStyle == LineStyle.None) { series.Color = OxyColors.Transparent; } } // Line thickness if (lineThickness == LineThicknessType.Thin) { series.StrokeThickness = 0.5; } // Marker type. OxyPlot.MarkerType type; if (Enum.TryParse <OxyPlot.MarkerType>(oxyMarkerName, out type)) { series.MarkerType = type; } if (markerSize == MarkerSizeType.Normal) { series.MarkerSize = 7.0; } else { series.MarkerSize = 5.0; } series.MarkerStroke = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); if (filled) { series.MarkerFill = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); series.MarkerStroke = OxyColors.White; } this.plot1.Model.Series.Add(series); } }
private void SetupGraphs() { double[] x = { 0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6 }; try { pAboveGround.Model.Axes.Clear(); pAboveGround.Model.Series.Clear(); pBelowGround.Model.Axes.Clear(); pBelowGround.Model.Series.Clear(); pAboveGround.Model.Title = "Above Ground"; pAboveGround.Model.PlotAreaBorderColor = OxyColors.White; pAboveGround.Model.LegendBorder = OxyColors.Transparent; LinearAxis agxAxis = new LinearAxis(); agxAxis.Title = "Multiple of Tree Height"; agxAxis.AxislineStyle = LineStyle.Solid; agxAxis.AxisDistance = 2; agxAxis.Position = AxisPosition.Top; LinearAxis agyAxis = new LinearAxis(); agyAxis.Title = "%"; agyAxis.AxislineStyle = LineStyle.Solid; agyAxis.AxisDistance = 2; Utility.LineSeriesWithTracker seriesShade = new Utility.LineSeriesWithTracker(); List<DataPoint> pointsShade = new List<DataPoint>(); DataRow rowShade = table.Rows[0]; DataColumn col = table.Columns[0]; double[] yShade = new double[table.Columns.Count - 1]; pAboveGround.Model.Axes.Add(agxAxis); pAboveGround.Model.Axes.Add(agyAxis); for (int i = 1; i < table.Columns.Count; i++) { if (rowShade[i].ToString() == "") return; yShade[i - 1] = Convert.ToDouble(rowShade[i]); } for (int i = 0; i < x.Length; i++) { pointsShade.Add(new DataPoint(x[i], yShade[i])); } seriesShade.Title = "Shade"; seriesShade.ItemsSource = pointsShade; pAboveGround.Model.Series.Add(seriesShade); } //don't draw the series if the format is wrong catch (FormatException) { pBelowGround.Model.Series.Clear(); } /////////////// Below Ground try { pBelowGround.Model.Title = "Below Ground"; pBelowGround.Model.PlotAreaBorderColor = OxyColors.White; pBelowGround.Model.LegendBorder = OxyColors.Transparent; LinearAxis bgxAxis = new LinearAxis(); LinearAxis bgyAxis = new LinearAxis(); List<Utility.LineSeriesWithTracker> seriesList = new List<Utility.LineSeriesWithTracker>(); bgyAxis.Position = AxisPosition.Left; bgxAxis.Position = AxisPosition.Top; bgyAxis.Title = "Depth (mm)"; bgxAxis.Title = "Root Length Density (cm/cm3)"; bgxAxis.Minimum = 0; bgxAxis.MinorTickSize = 0; bgxAxis.AxislineStyle = LineStyle.Solid; bgxAxis.AxisDistance = 2; pBelowGround.Model.Axes.Add(bgxAxis); bgyAxis.StartPosition = 1; bgyAxis.EndPosition = 0; bgyAxis.MinorTickSize = 0; bgyAxis.AxislineStyle = LineStyle.Solid; pBelowGround.Model.Axes.Add(bgyAxis); for (int i = 1; i < table.Columns.Count; i++) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.Title = table.Columns[i].ColumnName; double[] data = new double[table.Rows.Count - 4]; for (int j = 4; j < table.Rows.Count; j++) { data[j - 4] = Convert.ToDouble(table.Rows[j].Field<string>(i)); } List<DataPoint> points = new List<DataPoint>(); for (int j = 0; j < data.Length; j++) { points.Add(new DataPoint(data[j], SoilMidpoints[j])); } series.ItemsSource = points; pBelowGround.Model.Series.Add(series); } } //don't draw the series if the format is wrong catch (FormatException) { pBelowGround.Model.Series.Clear(); } finally { pAboveGround.InvalidatePlot(true); pBelowGround.InvalidatePlot(true); } }
/// <summary> /// Setup the graphs shown below the grids. /// </summary> private void SetupGraphs() { double[] x = { 0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6 }; try { aboveGroundGraph.Model.Axes.Clear(); aboveGroundGraph.Model.Series.Clear(); belowGroundGraph.Model.Axes.Clear(); belowGroundGraph.Model.Series.Clear(); aboveGroundGraph.Model.Title = "Above Ground"; aboveGroundGraph.Model.SetLegendBorder(OxyColors.Transparent); LinearAxis agxAxis = new LinearAxis(); agxAxis.Title = "Multiple of Tree Height"; agxAxis.AxislineStyle = LineStyle.Solid; agxAxis.AxisDistance = 2; agxAxis.Position = AxisPosition.Top; LinearAxis agyAxis = new LinearAxis(); agyAxis.Title = "%"; agyAxis.AxislineStyle = LineStyle.Solid; agyAxis.AxisDistance = 2; Utility.LineSeriesWithTracker seriesShade = new Utility.LineSeriesWithTracker(); List <DataPoint> pointsShade = new List <DataPoint>(); DataRow rowShade = SpatialDataGrid.DataSource.Rows[0]; DataColumn col = SpatialDataGrid.DataSource.Columns[0]; double[] yShade = new double[SpatialDataGrid.DataSource.Columns.Count - 1]; aboveGroundGraph.Model.Axes.Add(agxAxis); aboveGroundGraph.Model.Axes.Add(agyAxis); for (int i = 1; i < SpatialDataGrid.DataSource.Columns.Count; i++) { if (rowShade[i].ToString() == "") { return; } yShade[i - 1] = Convert.ToDouble(rowShade[i], System.Globalization.CultureInfo.InvariantCulture); } for (int i = 0; i < x.Length; i++) { pointsShade.Add(new DataPoint(x[i], yShade[i])); } seriesShade.Title = "Shade"; seriesShade.ItemsSource = pointsShade; aboveGroundGraph.Model.Series.Add(seriesShade); Color foregroundColour = Utility.Configuration.Settings.DarkTheme ? Color.White : Color.Black; Color backgroundColour = Utility.Configuration.Settings.DarkTheme ? Color.Black : Color.White; SetForegroundColour(aboveGroundGraph, foregroundColour); SetBackgroundColour(aboveGroundGraph, backgroundColour); } //don't draw the series if the format is wrong catch (FormatException) { belowGroundGraph.Model.Series.Clear(); } /////////////// Below Ground try { belowGroundGraph.Model.Title = "Below Ground"; belowGroundGraph.Model.SetLegendBorder(OxyColors.Transparent); LinearAxis bgxAxis = new LinearAxis(); LinearAxis bgyAxis = new LinearAxis(); bgyAxis.Position = AxisPosition.Left; bgxAxis.Position = AxisPosition.Top; bgyAxis.Title = "Depth (mm)"; bgxAxis.Title = "Root Length Density (cm/cm3)"; bgxAxis.Minimum = 0; bgxAxis.MinorTickSize = 0; bgxAxis.AxislineStyle = LineStyle.Solid; bgxAxis.AxisDistance = 2; belowGroundGraph.Model.Axes.Add(bgxAxis); bgyAxis.StartPosition = 1; bgyAxis.EndPosition = 0; bgyAxis.MinorTickSize = 0; bgyAxis.AxislineStyle = LineStyle.Solid; belowGroundGraph.Model.Axes.Add(bgyAxis); for (int i = 1; i < SpatialDataGrid.DataSource.Columns.Count; i++) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.Title = SpatialDataGrid.DataSource.Columns[i].ColumnName; double[] data = new double[SpatialDataGrid.DataSource.Rows.Count - 4]; for (int j = 4; j < SpatialDataGrid.DataSource.Rows.Count; j++) { data[j - 4] = Convert.ToDouble(SpatialDataGrid.DataSource.Rows[j].ItemArray[i], System.Globalization.CultureInfo.InvariantCulture); } List <DataPoint> points = new List <DataPoint>(); for (int j = 0; j < Math.Min(data.Length, SoilMidpoints.Length); j++) { points.Add(new DataPoint(data[j], SoilMidpoints[j])); } series.ItemsSource = points; belowGroundGraph.Model.Series.Add(series); } Color foregroundColour = Utility.Configuration.Settings.DarkTheme ? Color.White : Color.Black; Color backgroundColour = Utility.Configuration.Settings.DarkTheme ? Color.Black : Color.White; SetForegroundColour(belowGroundGraph, foregroundColour); SetBackgroundColour(belowGroundGraph, backgroundColour); } // Don't draw the series if the format is wrong. catch (FormatException) { belowGroundGraph.Model.Series.Clear(); } finally { aboveGroundGraph.InvalidatePlot(true); belowGroundGraph.InvalidatePlot(true); } }
public void DrawLineAndMarkers( string title, IEnumerable x, IEnumerable y, Models.Graph.Axis.AxisType xAxisType, Models.Graph.Axis.AxisType yAxisType, Color colour, Models.Graph.LineType lineType, Models.Graph.MarkerType markerType, Models.Graph.LineThicknessType lineThickness, Models.Graph.MarkerSizeType markerSize, bool showOnLegend) { if (x != null && y != null) { Utility.LineSeriesWithTracker series = new Utility.LineSeriesWithTracker(); series.OnHoverOverPoint += OnHoverOverPoint; if (showOnLegend) series.Title = title; else series.ToolTip = title; series.Color = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); series.ItemsSource = this.PopulateDataPointSeries(x, y, xAxisType, yAxisType); series.XAxisKey = xAxisType.ToString(); series.YAxisKey = yAxisType.ToString(); series.CanTrackerInterpolatePoints = false; bool filled = false; string oxyMarkerName = markerType.ToString(); if (oxyMarkerName.StartsWith("Filled")) { oxyMarkerName = oxyMarkerName.Remove(0, 6); filled = true; } // Line type. LineStyle oxyLineType; if (Enum.TryParse<LineStyle>(lineType.ToString(), out oxyLineType)) { series.LineStyle = oxyLineType; if (series.LineStyle == LineStyle.None) series.Color = OxyColors.Transparent; } // Line thickness if (lineThickness == LineThicknessType.Thin) series.StrokeThickness = 0.5; // Marker type. OxyPlot.MarkerType type; if (Enum.TryParse<OxyPlot.MarkerType>(oxyMarkerName, out type)) { series.MarkerType = type; } if (markerSize == MarkerSizeType.Normal) series.MarkerSize = 7.0; else series.MarkerSize = 5.0; series.MarkerStroke = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); if (filled) { series.MarkerFill = OxyColor.FromArgb(colour.A, colour.R, colour.G, colour.B); series.MarkerStroke = OxyColors.White; } this.plot1.Model.Series.Add(series); } }