Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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()));
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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();
 }
Ejemplo n.º 7
0
        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);
        }