public void Test_MultiPlot_MatchJustOneAxis() { ScottPlot.MultiPlot multiplot = SampleMultiPlot(); multiplot.subplots[1].MatchAxis(multiplot.subplots[3], horizontal: false); multiplot.subplots[1].MatchLayout(multiplot.subplots[3], horizontal: false); multiplot.subplots[1].Title("#1 (matched vertical to #3)"); multiplot.subplots[2].MatchAxis(multiplot.subplots[3], vertical: false); multiplot.subplots[2].MatchLayout(multiplot.subplots[3], vertical: false); multiplot.subplots[2].Title("#2 (matched hoizontal to #3)"); string name = System.Reflection.MethodBase.GetCurrentMethod().Name; string filePath = System.IO.Path.GetFullPath(name + ".png"); multiplot.SaveFig(filePath); Console.WriteLine($"Saved {filePath}"); DisplayAxisInfo(multiplot); var matchedVerticalLimits = new ScottPlot.Config.AxisLimits2D(multiplot.subplots[1].Axis()); var matchedHorizontalLimits = new ScottPlot.Config.AxisLimits2D(multiplot.subplots[1].Axis()); Assert.That(matchedVerticalLimits.xSpan > 0 && matchedVerticalLimits.ySpan > 0); Assert.That(matchedHorizontalLimits.xSpan > 0 && matchedHorizontalLimits.ySpan > 0); }
public void Test_AutoAxis_ShrinkWhenNeeded() { Random rand = new Random(0); var plt = new ScottPlot.Plot(); // small area plt.PlotLine(-5, -5, 5, 5); plt.AxisAuto(); var limitsA = new ScottPlot.Config.AxisLimits2D(plt.Axis()); Console.WriteLine($"limits A: {limitsA}"); // expand to large area plt.Axis(-123, 123, -123, 123); var limitsB = new ScottPlot.Config.AxisLimits2D(plt.Axis()); Console.WriteLine($"limits B: {limitsB}"); // shrink back to small area plt.AxisAuto(); var limitsC = new ScottPlot.Config.AxisLimits2D(plt.Axis()); Console.WriteLine($"limits C: {limitsC}"); Assert.That(limitsB.xSpan > limitsC.xSpan); Assert.That(limitsB.ySpan > limitsC.ySpan); Assert.That(limitsA.xSpan == limitsC.xSpan); Assert.That(limitsA.ySpan == limitsC.ySpan); }
public void Test_ToString_ExpectedOutput() { var limits = new ScottPlot.Config.AxisLimits2D(11, 22, 33, 44); Console.WriteLine(limits); Assert.AreEqual("x1=11.000, x2=22.000, y1=33.000, y2=44.000", limits.ToString()); }
private void DisplayAxisInfo(ScottPlot.MultiPlot multiplot) { for (int i = 0; i < multiplot.subplots.Length; i += 1) { var limits = new ScottPlot.Config.AxisLimits2D(multiplot.subplots[i].Axis()); Console.WriteLine($"Subplot index {i} {limits}"); } }
private (double xUnitsPerPixel, double yUnitsPerPixel) getUnitsPerPixel(ScottPlot.Plot plt) { var settings = plt.GetSettings(false); var limits = new ScottPlot.Config.AxisLimits2D(settings.axes.ToArray()); var xUnitsPerPixel = limits.xSpan / settings.dataSize.Width; var yUnitsPerPixel = limits.ySpan / settings.dataSize.Height; return(xUnitsPerPixel, yUnitsPerPixel); }
public void Test_ExpandXY_ExpectedOutput() { var limits = new ScottPlot.Config.AxisLimits2D(); limits.ExpandXY(-10, 20, -30, 40); Assert.AreEqual(limits.x1, -10); Assert.AreEqual(limits.x2, 20); Assert.AreEqual(limits.y1, -30); Assert.AreEqual(limits.y2, 40); }
public void Test_ExpandY_ExpectedOutput() { var limits = new ScottPlot.Config.AxisLimits2D(); limits.ExpandY(-20, 20); Assert.IsNaN(limits.x1); Assert.IsNaN(limits.x2); Assert.AreEqual(limits.y1, -20); Assert.AreEqual(limits.y2, 20); }
public void Test_EmptyConstructor_StartsAsNaN() { var limits = new ScottPlot.Config.AxisLimits2D(); Console.WriteLine(limits); Assert.IsNaN(limits.x1); Assert.IsNaN(limits.x2); Assert.IsNaN(limits.y1); Assert.IsNaN(limits.y2); }
public void Test_Constructor_StoresValues() { var limits = new ScottPlot.Config.AxisLimits2D(11, 22, 33, 44); Console.WriteLine(limits); Assert.AreEqual(11, limits.x1); Assert.AreEqual(22, limits.x2); Assert.AreEqual(33, limits.y1); Assert.AreEqual(44, limits.y2); }
public void Test_MakeRational_WhenXsContainNaN() { var limits = new ScottPlot.Config.AxisLimits2D(); limits.ExpandY(-30, 40); limits.MakeRational(); Console.WriteLine(limits); Assert.That(limits.x1 < 0); Assert.That(limits.x1 > -10); Assert.That(limits.x2 > 0); Assert.That(limits.x2 < 10); Assert.That(limits.y1 == -30); Assert.That(limits.y2 == 40); }
public void Test_MakeRational_WhenAllAreNaN() { var limits = new ScottPlot.Config.AxisLimits2D(); limits.MakeRational(); Assert.That(limits.x1 < 0); Assert.That(limits.x1 > -10); Assert.That(limits.x2 > 0); Assert.That(limits.x2 < 10); Assert.That(limits.y1 < 0); Assert.That(limits.y1 > -10); Assert.That(limits.y2 > 0); Assert.That(limits.y2 < 10); }
public void Test_MakeRational_WhenYsContainNaN() { var limits = new ScottPlot.Config.AxisLimits2D(); limits.ExpandX(-10, 20); limits.MakeRational(); Console.WriteLine(limits); Assert.That(limits.x1 == -10); Assert.That(limits.x2 == 20); Assert.That(limits.y1 < 0); Assert.That(limits.y1 > -10); Assert.That(limits.y2 > 0); Assert.That(limits.y2 < 10); }
public void Test_MultiPlot_MatchAxis() { ScottPlot.MultiPlot multiplot = SampleMultiPlot(); // update the lower left (index 2) plot to use the scale of the lower right (index 3) multiplot.subplots[2].MatchAxis(multiplot.subplots[3]); multiplot.subplots[2].Title("#2 (matched to #3)"); string name = System.Reflection.MethodBase.GetCurrentMethod().Name; string filePath = System.IO.Path.GetFullPath(name + ".png"); multiplot.SaveFig(filePath); Console.WriteLine($"Saved {filePath}"); DisplayAxisInfo(multiplot); var matchedAxisLimits = new ScottPlot.Config.AxisLimits2D(multiplot.subplots[2].Axis()); Assert.That(matchedAxisLimits.xSpan > 0 && matchedAxisLimits.ySpan > 0); }
public void Test_AutoAxis_ExpandYonly() { Random rand = new Random(0); var plt = new ScottPlot.Plot(); // small area plt.PlotLine(-5, -5, 5, 5); plt.AxisAuto(); var limitsA = new ScottPlot.Config.AxisLimits2D(plt.Axis()); // large area plt.PlotLine(-99, -99, 99, 99); plt.AxisAuto(yExpandOnly: true); var limitsB = new ScottPlot.Config.AxisLimits2D(plt.Axis()); Assert.That(limitsA.xSpan == limitsB.xSpan); Assert.That(limitsA.ySpan < limitsB.ySpan); }