public void Test_Bar_ShowValues() { var plt = new ScottPlot.Plot(); // start with default settings double[] ys = new double[] { 1, 3, 2, 4 }; var bar = new BarPlot(null, ys, null, null) { }; plt.Add(bar); plt.SetAxisLimits(-1, 4, -1, 5); var bmp1 = TestTools.GetLowQualityBitmap(plt); // change the plottable bar.ShowValuesAboveBars = true; var bmp2 = TestTools.GetLowQualityBitmap(plt); // measure what changed //TestTools.SaveFig(bmp1, "1"); //TestTools.SaveFig(bmp2, "2"); var before = new MeanPixel(bmp1); var after = new MeanPixel(bmp2); Console.WriteLine($"Before: {before}"); Console.WriteLine($"After: {after}"); Assert.That(after.IsDarkerThan(before)); }
public void Test_Bar_MultiSeries() { Random rand = new Random(0); string[] groupNames = { "one", "two", "three", "four", "five" }; string[] seriesNames = { "alpha", "beta", "gamma" }; int groupCount = groupNames.Length; double[] xs = DataGen.Consecutive(groupCount); double[] ys1 = DataGen.RandomNormal(rand, groupCount, 20, 5); double[] ys2 = DataGen.RandomNormal(rand, groupCount, 20, 5); double[] ys3 = DataGen.RandomNormal(rand, groupCount, 20, 5); double[] err1 = DataGen.RandomNormal(rand, groupCount, 5, 2); double[] err2 = DataGen.RandomNormal(rand, groupCount, 5, 2); double[] err3 = DataGen.RandomNormal(rand, groupCount, 5, 2); var plt = new ScottPlot.Plot(600, 400); plt.PlotBarGroups( groupLabels: groupNames, seriesLabels: seriesNames, ys: new double[][] { ys1, ys2, ys3 }, yErr: new double[][] { err1, err2, err3 }); plt.SetAxisLimits(yMin: 0); plt.Grid(enableVertical: false, lineStyle: LineStyle.Dot); plt.Legend(location: Alignment.UpperRight); TestTools.SaveFig(plt); }
public void Test_AutoAxis_ShrinkWhenNeeded() { var plt = new ScottPlot.Plot(); // small area plt.PlotLine(-5, -5, 5, 5); plt.AxisAuto(); var limitsA = plt.GetAxisLimits(); Console.WriteLine($"limits A: {limitsA}"); // expand to large area plt.SetAxisLimits(-123, 123, -123, 123); var limitsB = plt.GetAxisLimits(); Console.WriteLine($"limits B: {limitsB}"); // shrink back to small area plt.AxisAuto(); var limitsC = plt.GetAxisLimits(); Console.WriteLine($"limits C: {limitsC}"); Assert.That(limitsB.XMin < limitsA.XMin); Assert.That(limitsB.XMax > limitsA.XMax); Assert.That(limitsB.YMin < limitsA.YMin); Assert.That(limitsB.YMax > limitsA.YMax); Assert.That(limitsB.XMin < limitsC.XMin); Assert.That(limitsB.XMax > limitsC.XMax); Assert.That(limitsB.YMin < limitsC.YMin); Assert.That(limitsB.YMax > limitsC.YMax); }
public void Test_function_LineStyle() { var plt = new ScottPlot.Plot(); // start with default settings double?func(double x) => Math.Sqrt(x); var funcPlot = new FunctionPlot(func) { }; plt.SetAxisLimits(-1, 1, -.5, 1.5); plt.Add(funcPlot); var bmp1 = TestTools.GetLowQualityBitmap(plt); // change the plottable funcPlot.lineStyle = LineStyle.Dash; var bmp2 = TestTools.GetLowQualityBitmap(plt); // measure what changed //TestTools.SaveFig(bmp1, "1"); //TestTools.SaveFig(bmp2, "2"); var before = new MeanPixel(bmp1); var after = new MeanPixel(bmp2); Console.WriteLine($"Before: {before}"); Console.WriteLine($"After: {after}"); Assert.That(after.IsLighterThan(before)); }
public void Test_TickMinor_OnePixelOffFromMajor() { // this makes the horizontal axis tick near 2.0 look bad var plt = new ScottPlot.Plot(400, 300); plt.SetAxisLimits(0, 3, 0, 3); TestTools.SaveFig(plt); }
public void Test_Axis_VeryBigNumbers() { var plt = new ScottPlot.Plot(); plt.AddSignal(DataGen.Sin(51)); plt.AddSignal(DataGen.Cos(51)); plt.SetAxisLimits(yMin: -10e50, yMax: 10e50); TestTools.SaveFig(plt); }
public void Test_Scatter_Smooth() { double[] xs = { 18.5, 20.6, 22.3, 24.5, 26.6, 15, 15 }; double[] ys = { 1.43, 1.48, 1.6, 1.59, 1.53, 1.52, 1.6 }; var plt = new ScottPlot.Plot(600, 400); var sp1 = plt.AddScatter(xs, ys, label: "DrawLines()"); sp1.Smooth = false; var sp2 = plt.AddScatter(xs, ys, label: "DrawCurve()"); sp2.Smooth = true; plt.Legend(); plt.SetAxisLimits(0, 30, 1.42, 1.62); TestTools.SaveFig(plt); }