Initial Commit
This commit is contained in:
249
Plotter2DExtensions.cs
Normal file
249
Plotter2DExtensions.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Research.DynamicDataDisplay.DataSources;
|
||||
using System.Windows.Media;
|
||||
using Microsoft.Research.DynamicDataDisplay.PointMarkers;
|
||||
using Microsoft.Research.DynamicDataDisplay.Filters;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Microsoft.Research.DynamicDataDisplay.Charts;
|
||||
|
||||
namespace Microsoft.Research.DynamicDataDisplay
|
||||
{
|
||||
/// <summary>
|
||||
/// Extensions for <see cref="Plotter2D"/> - simplified methods to add line and marker charts.
|
||||
/// </summary>
|
||||
public static class Plotter2DExtensions
|
||||
{
|
||||
#region Line graphs
|
||||
|
||||
/// <summary>Adds one dimensional graph with random color of line.</summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource)
|
||||
{
|
||||
return AddLineGraph(plotter, pointSource, ColorHelper.CreateRandomHsbColor());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph with specified color of line.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="lineColor">Color of the line.</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, Color lineColor)
|
||||
{
|
||||
return AddLineGraph(plotter, pointSource, lineColor, 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph with random color if line.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="lineThickness">The line thickness.</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, double lineThickness)
|
||||
{
|
||||
return AddLineGraph(plotter, pointSource, ColorHelper.CreateRandomHsbColor(), lineThickness);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="lineColor">Color of the line.</param>
|
||||
/// <param name="lineThickness">The line thickness.</param>
|
||||
/// <param name="description">Description of data</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, Color lineColor, double lineThickness,
|
||||
string description)
|
||||
{
|
||||
return AddLineGraph(plotter, pointSource, new Pen(new SolidColorBrush(lineColor), lineThickness), new PenDescription(description));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="lineColor">Color of the line.</param>
|
||||
/// <param name="lineThickness">The line thickness.</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, Color lineColor, double lineThickness)
|
||||
{
|
||||
return AddLineGraph(plotter, pointSource, new Pen(new SolidColorBrush(lineColor), lineThickness), null);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="description">The description.</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, string description)
|
||||
{
|
||||
LineGraph graph = AddLineGraph(plotter, pointSource);
|
||||
graph.Description = new PenDescription(description);
|
||||
NewLegend.SetDescription(graph, description);
|
||||
return graph;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds one dimensional graph.
|
||||
/// </summary>
|
||||
/// <param name="pointSource">The point source.</param>
|
||||
/// <param name="lineThickness">The line thickness.</param>
|
||||
/// <param name="description">The description.</param>
|
||||
/// <returns></returns>
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, double lineThickness, string description)
|
||||
{
|
||||
var res = AddLineGraph(plotter, pointSource,
|
||||
new Pen(new SolidColorBrush(ColorHelper.CreateRandomHsbColor()), lineThickness),
|
||||
(PointMarker)null,
|
||||
new PenDescription(description));
|
||||
|
||||
return res.LineGraph;
|
||||
}
|
||||
|
||||
/// <summary>Adds one dimensional graph to plotter. This method allows you to specify
|
||||
/// as much graph parameters as possible</summary>
|
||||
/// <param name="pointSource">Source of points to plot</param>
|
||||
/// <param name="linePen">Pen to draw the line. If pen is null no lines will be drawn</param>
|
||||
/// <param name="marker">Marker to draw on points. If marker is null no points will be drawn</param>
|
||||
/// <param name="description">Description of graph to put in legend</param>
|
||||
/// <returns></returns>
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")]
|
||||
public static LineAndMarker<MarkerPointsGraph> AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource,
|
||||
Pen linePen, PointMarker marker, Description description)
|
||||
{
|
||||
if (pointSource == null)
|
||||
throw new ArgumentNullException("pointSource");
|
||||
|
||||
var res = new LineAndMarker<MarkerPointsGraph>();
|
||||
|
||||
if (linePen != null) // We are requested to draw line graphs
|
||||
{
|
||||
LineGraph graph = new LineGraph
|
||||
{
|
||||
DataSource = pointSource,
|
||||
LinePen = linePen
|
||||
};
|
||||
if (description != null)
|
||||
{
|
||||
NewLegend.SetDescription(graph, description.Brief);
|
||||
graph.Description = description;
|
||||
}
|
||||
if (marker == null)
|
||||
{
|
||||
// Add inclination filter only to graphs without markers
|
||||
// graph.Filters.Add(new InclinationFilter());
|
||||
}
|
||||
|
||||
res.LineGraph = graph;
|
||||
|
||||
graph.Filters.Add(new FrequencyFilter());
|
||||
plotter.Children.Add(graph);
|
||||
}
|
||||
|
||||
if (marker != null) // We are requested to draw marker graphs
|
||||
{
|
||||
MarkerPointsGraph markerGraph = new MarkerPointsGraph
|
||||
{
|
||||
DataSource = pointSource,
|
||||
Marker = marker
|
||||
};
|
||||
|
||||
res.MarkerGraph = markerGraph;
|
||||
|
||||
plotter.Children.Add(markerGraph);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/// <summary>Adds one dimensional graph to plotter. This method allows you to specify
|
||||
/// as much graph parameters as possible</summary>
|
||||
/// <param name="pointSource">Source of points to plot</param>
|
||||
/// <param name="linePen">Pen to draw the line. If pen is null no lines will be drawn</param>
|
||||
/// <param name="marker">Marker to draw on points. If marker is null no points will be drawn</param>
|
||||
/// <param name="description">Description of graph to put in legend</param>
|
||||
/// <returns></returns>
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")]
|
||||
public static LineAndMarker<ElementMarkerPointsGraph> AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource,
|
||||
Pen linePen, ElementPointMarker marker, Description description)
|
||||
{
|
||||
if (pointSource == null)
|
||||
throw new ArgumentNullException("pointSource");
|
||||
|
||||
var res = new LineAndMarker<ElementMarkerPointsGraph>();
|
||||
|
||||
|
||||
|
||||
if (linePen != null) // We are requested to draw line graphs
|
||||
{
|
||||
LineGraph graph = new LineGraph
|
||||
{
|
||||
DataSource = pointSource,
|
||||
LinePen = linePen
|
||||
};
|
||||
if (description != null)
|
||||
{
|
||||
NewLegend.SetDescription(graph, description.Brief);
|
||||
graph.Description = description;
|
||||
}
|
||||
if (marker == null)
|
||||
{
|
||||
// Add inclination filter only to graphs without markers
|
||||
// graph.Filters.Add(new InclinationFilter());
|
||||
}
|
||||
|
||||
graph.Filters.Add(new FrequencyFilter());
|
||||
|
||||
res.LineGraph = graph;
|
||||
|
||||
plotter.Children.Add(graph);
|
||||
}
|
||||
|
||||
if (marker != null) // We are requested to draw marker graphs
|
||||
{
|
||||
ElementMarkerPointsGraph markerGraph = new ElementMarkerPointsGraph
|
||||
{
|
||||
DataSource = pointSource,
|
||||
Marker = marker
|
||||
};
|
||||
|
||||
res.MarkerGraph = markerGraph;
|
||||
|
||||
plotter.Children.Add(markerGraph);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters")]
|
||||
public static LineGraph AddLineGraph(this Plotter2D plotter, IPointDataSource pointSource, Pen linePen, Description description)
|
||||
{
|
||||
if (pointSource == null)
|
||||
throw new ArgumentNullException("pointSource");
|
||||
if (linePen == null)
|
||||
throw new ArgumentNullException("linePen");
|
||||
|
||||
LineGraph graph = new LineGraph
|
||||
{
|
||||
DataSource = pointSource,
|
||||
LinePen = linePen
|
||||
};
|
||||
if (description != null)
|
||||
{
|
||||
NewLegend.SetDescription(graph, description.Brief);
|
||||
graph.Description = description;
|
||||
}
|
||||
// graph.Filters.Add(new InclinationFilter());
|
||||
graph.Filters.Add(new FrequencyFilter());
|
||||
plotter.Children.Add(graph);
|
||||
return graph;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user