Example #1
0
        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);
        }
Example #2
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);
        }
Example #3
0
        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());
        }
Example #4
0
 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}");
     }
 }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
        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);
        }
Example #14
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);
        }