コード例 #1
0
        public void Test_AxisAuto_SignalWithMinMaxIndexSet()
        {
            var plt = new ScottPlot.Plot(400, 300);
            var sig = plt.AddSignal(ScottPlot.DataGen.Sin(1000), sampleRate: 10);

            sig.MinRenderIndex = 450;
            sig.MaxRenderIndex = 550;
            plt.AxisAuto();

            var limits = plt.GetAxisLimits();

            Console.WriteLine($"AutoAxis Limits: {limits}");

            Assert.Less(limits.XMin, limits.XMax);
            Assert.Less(limits.YMin, limits.YMax);

            TestTools.SaveFig(plt);
        }
コード例 #2
0
ファイル: TestTools.cs プロジェクト: bclehmann/ScottPlot
        /// <summary>
        /// Return a string containing comma-separated labels for all visible horizontal ticks
        /// </summary>
        public static string GetXTickString(ScottPlot.Plot plt)
        {
            // enable manual tick measurement so tick density calculations are consistent across operating systems
            //plt.XAxis.TickMeasurement(manual: true);

            // perform a render to reset the layout
            plt.Layout(20, 20, 20, 20);
            plt.Render();

            // capture the ticks that were just rendered
            var limits = plt.GetAxisLimits();

            string[] labels = plt.XAxis.GetTicks(limits.XMin, limits.XMax)
                              .Select(x => x.Label)
                              .Where(x => !string.IsNullOrEmpty(x))
                              .ToArray();

            return(string.Join(", ", labels));
        }
コード例 #3
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);
        }
コード例 #4
0
ファイル: GetCoordinate.cs プロジェクト: Jmerk523/ScottPlot
        public void Test_GetUnit_ReturnsCorrectValue()
        {
            var plt = new ScottPlot.Plot(600, 400);

            plt.AddSignal(ScottPlot.DataGen.Sin(51));
            plt.Render();
            var limits = plt.GetAxisLimits();

            // right edge
            Assert.Greater(plt.GetCoordinateX(plt.Width), limits.XCenter);

            // left edge
            Assert.Less(plt.GetCoordinateX(0), limits.XCenter);

            // top edge
            Assert.Greater(plt.GetCoordinateY(0), limits.YCenter);

            // bottom edge
            Assert.Less(plt.GetCoordinateY(plt.Height), limits.YCenter);
        }
コード例 #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);
        }
コード例 #6
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);
        }