예제 #1
0
        public void Test_GetDataLimits()
        {
            var plt = new ScottPlot.Plot();

            Random rand = new(0);

            double[] xs = ScottPlot.DataGen.Random(rand, 100);
            double[] ys = ScottPlot.DataGen.Random(rand, 100);
            plt.AddScatter(xs, ys);
            plt.Render();

            // default axis limits contain padding and should be larger than data
            var axisLimitsDefault = plt.GetAxisLimits();

            Console.WriteLine(axisLimitsDefault);
            Assert.Less(axisLimitsDefault.XMin, xs.Min());
            Assert.Greater(axisLimitsDefault.XMax, xs.Max());
            Assert.Less(axisLimitsDefault.YMin, ys.Min());
            Assert.Greater(axisLimitsDefault.YMax, ys.Max());

            // axis limits after tight margins should make axis limts equal data limits
            plt.Margins(0, 0);
            var axisLimitsTight = plt.GetAxisLimits();

            Console.WriteLine(axisLimitsTight);
            Assert.AreEqual(axisLimitsTight.XMin, xs.Min(), 1e-8);
            Assert.AreEqual(axisLimitsTight.XMax, xs.Max(), 1e-8);
            Assert.AreEqual(axisLimitsTight.YMin, ys.Min(), 1e-8);
            Assert.AreEqual(axisLimitsTight.YMax, ys.Max(), 1e-8);

            // data limits should be the same numbers without modifying the axes
            var dataLimits = plt.GetDataLimits();

            Console.WriteLine(dataLimits);
            Assert.AreEqual(dataLimits.XMin, xs.Min());
            Assert.AreEqual(dataLimits.XMax, xs.Max());
            Assert.AreEqual(dataLimits.YMin, ys.Min());
            Assert.AreEqual(dataLimits.YMax, ys.Max());
        }