public void AxisVSpan_ExtremeZoomIn_FullScreenIsSpanColor() { var plt = new ScottPlot.Plot(); var axSpan = new VSpan() { Y1 = 1, Y2 = 10, Color = System.Drawing.Color.Green }; plt.Add(axSpan); // Initial zoom to fill full plot with span color plt.AxisZoom(1, 10); var smallZoomBmp = TestTools.GetLowQualityBitmap(plt); var smallZoom = new MeanPixel(smallZoomBmp); // Extreme zoom to prove that full plot filled with span Color plt.AxisZoom(1, 10_000_000); var extremeZoomBmp = TestTools.GetLowQualityBitmap(plt); var extremeZoom = new MeanPixel(extremeZoomBmp); // Compare mean pixel with delta, because different ticks // Y Ticks has more affect on mean pixel Assert.AreEqual(smallZoom.RGB, extremeZoom.RGB, 20); }
public void Test_AxisAuto_AdjustsAllAxes() { var plt = new ScottPlot.Plot(400, 300); var sig1 = plt.AddSignal(ScottPlot.DataGen.Sin(51)); sig1.XAxisIndex = 0; sig1.YAxisIndex = 0; var sig2 = plt.AddSignal(ScottPlot.DataGen.Cos(51)); sig2.XAxisIndex = 1; sig2.YAxisIndex = 1; // on startup all axes are reset with AxisAuto() plt.Render(); plt.AxisAuto(); var originalLimitsPrimary = plt.GetAxisLimits(0); var originalLimitsSecondary = plt.GetAxisLimits(1); // zoom out on all axes plt.AxisZoom(.1, .1, xAxisIndex: 0, yAxisIndex: 0); plt.AxisZoom(.1, .1, xAxisIndex: 1, yAxisIndex: 1); var zoomedOutLimitsPrimary = plt.GetAxisLimits(0); Assert.Greater(zoomedOutLimitsPrimary.XSpan, originalLimitsPrimary.XSpan); Assert.Greater(zoomedOutLimitsPrimary.YSpan, originalLimitsPrimary.YSpan); var zoomedOutLimitsSecondary = plt.GetAxisLimits(1); Assert.Greater(zoomedOutLimitsSecondary.XSpan, originalLimitsSecondary.XSpan); Assert.Greater(zoomedOutLimitsSecondary.YSpan, originalLimitsSecondary.YSpan); // call AxisAuto() which is now expected to act on all axes plt.AxisAuto(); var resetLimitsPrimary = plt.GetAxisLimits(0); var resetLimitsSecondary = plt.GetAxisLimits(1); Assert.AreEqual(resetLimitsPrimary.XSpan, originalLimitsPrimary.XSpan); Assert.AreEqual(resetLimitsPrimary.YSpan, originalLimitsPrimary.YSpan); Assert.AreEqual(resetLimitsSecondary.XSpan, originalLimitsSecondary.XSpan); Assert.AreEqual(resetLimitsSecondary.YSpan, originalLimitsSecondary.YSpan); TestTools.SaveFig(plt); //var limits = plt.GetAxisLimits(); //Console.WriteLine(limits); }
public string Figure_01d_Zoom_and_Pan() { string name = System.Reflection.MethodBase.GetCurrentMethod().Name.Replace("Figure_", ""); string fileName = System.IO.Path.GetFullPath($"{outputFolderName}/{name}.png"); var plt = new ScottPlot.Plot(width, height); plt.PlotScatter(dataXs, dataSin); plt.PlotScatter(dataXs, dataCos); plt.AxisZoom(2, 2); plt.AxisPan(-10, .5); plt.SaveFig(fileName); Console.WriteLine($"Saved: {System.IO.Path.GetFileName(fileName)}"); return(name + ":" + ScottPlot.Tools.BitmapHash(plt.GetBitmap())); }
public void Test_Signal_FillBelow_ZoomOut() { // addresses issue #1476 where zooming far out causes the width of the // fill to be zero and a hard crash // https://github.com/ScottPlot/ScottPlot/issues/1476 var plt = new ScottPlot.Plot(400, 300); var line = plt.AddSignal(ScottPlot.DataGen.RandomWalk(100)); line.FillBelow(); for (int i = 0; i < 10; i++) { plt.AxisZoom(.1, .1); plt.Render(); } }
public void Test_View_LimitsOuter() { var plt = new ScottPlot.Plot(400, 300); plt.AddSignal(ScottPlot.DataGen.Sin(51)); plt.AddSignal(ScottPlot.DataGen.Cos(51)); plt.SetOuterViewLimits(xMin: -123, xMax: 123, yMin: -13, yMax: 13); TestTools.SaveFig(plt, "1"); for (int i = 0; i < 10; i++) { plt.AxisZoom(.5, .5); } TestTools.SaveFig(plt, "2"); var limits2 = plt.GetAxisLimits(); Assert.GreaterOrEqual(limits2.XMin, -123); Assert.GreaterOrEqual(limits2.XMax, 123); Assert.GreaterOrEqual(limits2.YMin, -13); Assert.GreaterOrEqual(limits2.YMax, 13); }
public void TestGroup_Axes() { Console.Write($"Axis adjustments (auto, pan, zoom) ... "); plt.Clear(); plt.PlotScatter(xs, ys); plt.AxisAuto(); double[] axesBefore = new double[4]; Array.Copy(plt.Axis(), axesBefore, 4); plt.Axis(-1, 1, -1, 1); Debug.Assert(axesAreDifferent(axesBefore, plt.Axis())); plt.AxisAuto(); Debug.Assert(!axesAreDifferent(axesBefore, plt.Axis())); plt.AxisPan(1, 2); Debug.Assert(axesAreDifferent(axesBefore, plt.Axis())); plt.AxisAuto(); Debug.Assert(!axesAreDifferent(axesBefore, plt.Axis())); plt.AxisZoom(2, 3); Debug.Assert(axesAreDifferent(axesBefore, plt.Axis())); plt.AxisAuto(); Debug.Assert(!axesAreDifferent(axesBefore, plt.Axis())); Pass(); }
public void Test_View_LimitsInner() { var plt = new ScottPlot.Plot(400, 300); plt.AddSignal(ScottPlot.DataGen.Sin(51)); plt.AddSignal(ScottPlot.DataGen.Cos(51)); plt.SetInnerViewLimits(xMin: 10, xMax: 20, yMin: .1, yMax: .2); plt.AxisAuto(); TestTools.SaveFig(plt, "1"); for (int i = 0; i < 10; i++) { plt.AxisZoom(2, 2); } TestTools.SaveFig(plt, "2"); var limits2 = plt.GetAxisLimits(); Assert.LessOrEqual(limits2.XMin, 10); Assert.LessOrEqual(limits2.XMax, 20); Assert.LessOrEqual(limits2.YMin, .1); Assert.LessOrEqual(limits2.YMax, .2); }