public void Test_AutoAxis_ShrinkWhenNeeded() { var plt = new ScottPlot.Plot(); // small area plt.PlotLine(-5, -5, 5, 5); plt.AxisAuto(); var limitsA = plt.GetAxisLimits(); Console.WriteLine($"limits A: {limitsA}"); // expand to large area plt.SetAxisLimits(-123, 123, -123, 123); var limitsB = plt.GetAxisLimits(); Console.WriteLine($"limits B: {limitsB}"); // shrink back to small area plt.AxisAuto(); var limitsC = plt.GetAxisLimits(); Console.WriteLine($"limits C: {limitsC}"); Assert.That(limitsB.XMin < limitsA.XMin); Assert.That(limitsB.XMax > limitsA.XMax); Assert.That(limitsB.YMin < limitsA.YMin); Assert.That(limitsB.YMax > limitsA.YMax); Assert.That(limitsB.XMin < limitsC.XMin); Assert.That(limitsB.XMax > limitsC.XMax); Assert.That(limitsB.YMin < limitsC.YMin); Assert.That(limitsB.YMax > limitsC.YMax); }
public void Test_Scatter_Offset() { Random rand = new(0); double[] xs = DataGen.Random(rand, 20); double[] ys = DataGen.Random(rand, 20); var plt = new ScottPlot.Plot(400, 300); var scatter = plt.AddScatter(xs, ys); scatter.XError = DataGen.Random(rand, 20, .1); scatter.YError = DataGen.Random(rand, 20, .1); plt.AxisAuto(); var limits1 = plt.GetAxisLimits(); //TestTools.SaveFig(plt, "beforeOffset"); Assert.Less(limits1.XMax, 10); Assert.Less(limits1.YMax, 20); scatter.OffsetX = 10; scatter.OffsetY = 20; plt.AxisAuto(); var limits2 = plt.GetAxisLimits(); //TestTools.SaveFig(plt, "afterOffset"); Assert.Greater(limits2.XMax, 10); Assert.Greater(limits2.YMax, 20); }
public void Test_AutoAxis_ExpandXY() { var plt = new ScottPlot.Plot(); // small area plt.PlotLine(-5, -5, 5, 5); plt.AxisAuto(); var limitsA = plt.GetAxisLimits(); // large area plt.PlotLine(-99, -99, 99, 99); plt.AxisAuto(); var limitsB = plt.GetAxisLimits(); Assert.That(limitsB.XMin < limitsA.XMin); Assert.That(limitsB.XMax > limitsA.XMax); Assert.That(limitsB.YMin < limitsA.YMin); Assert.That(limitsB.YMax > limitsA.YMax); }
public void Test_AutoAxis_CandlestickSinglePoint() { var plt = new ScottPlot.Plot(); plt.PlotCandlestick(DataGen.RandomStockPrices(rand: null, pointCount: 1)); var limits = plt.GetAxisLimits(); Assert.Greater(limits.XSpan, 0); Assert.Greater(limits.YSpan, 0); }
public void Test_AutoAxis_WorksAfterClear() { var plt = new ScottPlot.Plot(); plt.PlotPoint(0.1, 0.1); plt.PlotPoint(-0.1, -0.1); plt.AxisAuto(); plt.Render(); // force a render Assert.Greater(plt.GetAxisLimits().XMin, -5); plt.PlotPoint(999, 999); plt.PlotPoint(-999, -999); plt.AxisAuto(); plt.Render(); // force a render Assert.Less(plt.GetAxisLimits().XMin, -800); plt.Clear(); plt.PlotPoint(0.1, 0.1); plt.PlotPoint(-0.1, -0.1); plt.Render(); // force a render Assert.Greater(plt.GetAxisLimits().XMin, -5); }
public void Test_MultiAxis_AutoAxis() { double[] xs = { 1, 2, 3 }; double[] ys = { 4, 5, 6 }; var plt = new ScottPlot.Plot(400, 300); var sp = plt.AddScatter(xs, ys); sp.YAxisIndex = 1; sp.XAxisIndex = 1; plt.Render(); var limitsA = plt.GetAxisLimits(1, 1); xs[0] = 999; ys[0] = 999; plt.AxisAuto(0.05, .01, 1, 1); plt.Render(); var limitsB = plt.GetAxisLimits(1, 1); Assert.Greater(limitsB.XMax, limitsA.XMax); Assert.Greater(limitsB.YMax, limitsA.YMax); }
/// <summary> /// Get the axis limits for the given plot and apply them to this plot /// </summary> public void MatchAxis(Plot sourcePlot, bool horizontal = true, bool vertical = true) { var sourceLimits = sourcePlot.GetAxisLimits(); if (horizontal) { SetAxisLimitsX(sourceLimits.XMin, sourceLimits.XMax); } if (vertical) { SetAxisLimitsY(sourceLimits.YMin, sourceLimits.YMax); } }
public void Test_AutoAxis_ScatterVerticalLine() { var plt = new ScottPlot.Plot(); plt.PlotScatter( xs: new double[] { 1, 1 }, ys: new double[] { 1, 2 } ); plt.AxisAuto(); var limits = plt.GetAxisLimits(); Assert.Greater(limits.XSpan, 0); Assert.Greater(limits.YSpan, 0); }
public void Test_AutoAxis_ScatterSinglePoint() { var plt = new ScottPlot.Plot(); plt.AddScatter( xs: new double[] { 1, 2 }, ys: new double[] { 1, 2 } ); plt.AxisAuto(); var limits = plt.GetAxisLimits(); Assert.Greater(limits.XSpan, 0); Assert.Greater(limits.YSpan, 0); }