Example #1
0
        public void Test_RGB_analysis()
        {
            Random rand = new Random(0);

            double[] ys = DataGen.RandomWalk(rand, 100);

            var plt = new ScottPlot.Plot(400, 300);

            plt.Style(figBg: System.Drawing.Color.Gray, dataBg: System.Drawing.Color.Gray);

            plt.PlotSignal(ys, yOffset: 0, color: System.Drawing.Color.FromArgb(255, 0, 0), label: "red", lineWidth: 2);
            plt.PlotSignal(ys, yOffset: 1, color: System.Drawing.Color.FromArgb(0, 255, 0), label: "green", lineWidth: 3);
            plt.PlotSignal(ys, yOffset: 2, color: System.Drawing.Color.FromArgb(0, 0, 255), label: "blue", lineWidth: 4);
            plt.PlotSignal(ys, yOffset: 3, color: System.Drawing.Color.FromArgb(0, 0, 0), label: "black");
            plt.PlotSignal(ys, yOffset: 4, color: System.Drawing.Color.FromArgb(255, 255, 255), label: "white");
            plt.Legend();

            System.Drawing.Bitmap bmp = plt.Render();

            var means = MeanPixel(bmp);

            Console.WriteLine($"mean bitmap intensity (ARGB): {means.A}, {means.R}, {means.G}, {means.B}");
            // mean bitmap intensity (ARGB): 255, 123.4157, 124.8481, 126.327066666667

            Assert.AreEqual(means.A, 255);    // image is not transparent
            Assert.Greater(means.B, means.G); // blue line is thicker than green line
            Assert.Greater(means.G, means.R); // green line is thicker than red line
        }
Example #2
0
        public FormsPlot()
        {
            InitializeComponent();

            rightClickMenu = new ContextMenuStrip();
            rightClickMenu.Items.Add("Save Image");
            rightClickMenu.Items.Add("Settings");
            rightClickMenu.Items.Add("Help");
            rightClickMenu.ItemClicked += new ToolStripItemClickedEventHandler(RightClickMenuItemClicked);

            pbPlot.MouseWheel += PbPlot_MouseWheel;

            isDesignerMode       = Process.GetCurrentProcess().ProcessName == "devenv";
            lblTitle.Visible     = isDesignerMode;
            lblVersion.Visible   = isDesignerMode;
            lblVersion.Text      = Tools.GetVersionString();
            pbPlot.BackColor     = ColorTranslator.FromHtml("#003366");
            lblTitle.BackColor   = ColorTranslator.FromHtml("#003366");
            lblVersion.BackColor = ColorTranslator.FromHtml("#003366");

            plt = new Plot();
            plt.Style(Style.Control);
            settings = plt.GetSettings(showWarning: false);

            PbPlot_MouseUp(null, null);
            PbPlot_SizeChanged(null, null);
        }
Example #3
0
 public ScottPlotUC()
 {
     InitializeComponent();
     plt.Style(ScottPlot.Style.Control);
     pbPlot.MouseWheel += PbPlot_MouseWheel;
     RightClickMenuSetup();
     UpdateSize();
     Render();
 }
Example #4
0
 public FormsPlot()
 {
     InitializeComponent();
     SetupMenu();
     SetupTimers();
     plt.Style(ScottPlot.Style.Control);
     pbPlot.MouseWheel += PbPlot_MouseWheel;
     PbPlot_SizeChanged(null, null);
 }
Example #5
0
 public ScottPlotUC()
 {
     InitializeComponent();
     plt.Style(ScottPlot.Style.Control);
     pbPlot.MouseWheel += PbPlot_MouseWheel;
     if (Process.GetCurrentProcess().ProcessName == "devenv")
     {
         ScottPlot.Tools.DesignerModeDemoPlot(plt);
     }
     PbPlot_SizeChanged(null, null);
 }
Example #6
0
        public void Test_FigureBackground_SupportsTransparency()
        {
            var plt = new ScottPlot.Plot(600, 400);

            plt.PlotSignal(DataGen.Sin(51));

            var mean1 = TestTools.MeanPixel(plt.GetBitmap());

            plt.Style(figBg: Color.Transparent);
            var mean2 = TestTools.MeanPixel(plt.GetBitmap());

            Assert.Less(mean2.A, mean1.A);
        }
Example #7
0
        private ScottPlot.Plot TestColormap(Palette cset, int lineWidth, bool dark = false)
        {
            var plt = new ScottPlot.Plot(600, 400);

            for (int i = 0; i < cset.Count(); i++)
            {
                double[] ys  = DataGen.Sin(51, phase: -i / Math.PI / cset.Count());
                var      sig = plt.AddSignal(ys, color: cset.GetColor(i));
                sig.MarkerSize = 0;
                sig.LineWidth  = lineWidth;
            }

            if (dark)
            {
                plt.Style(Style.Gray1);
                plt.Style(darkColor, darkColor);
            }

            plt.Title($"Colorset '{cset.Name}' has {cset.Count()} colors");
            plt.AxisAuto(0);

            return(plt);
        }
Example #8
0
        private ScottPlot.Plot TestColormap(Colorset cset, int lineWidth, bool dark = false)
        {
            var plt = new ScottPlot.Plot(600, 400);

            for (int i = 0; i < cset.Count(); i++)
            {
                double[] ys = DataGen.Sin(51,
                                          //mult: 1 - .5 * i / cset.Count(),
                                          phase: -i / Math.PI / cset.Count());
                plt.PlotSignal(ys, color: cset.GetColor(i), markerSize: 0, lineWidth: lineWidth);
            }

            if (dark)
            {
                plt.Style(Style.Gray1);
                plt.Style(darkColor, darkColor);
            }

            plt.Title($"Colorset '{cset.Name}' has {cset.Count()} colors");
            plt.AxisAuto(0);

            return(plt);
        }
Example #9
0
        public void Test_ImageLabel_MuchPaddingInside()
        {
            var plt = new ScottPlot.Plot();

            plt.Style(Style.Blue1);

            plt.YAxis.ImageLabel(new System.Drawing.Bitmap("Images/theta.jpg"), 50, 5);
            plt.XAxis.ImageLabel(new System.Drawing.Bitmap("Images/theta.jpg"), 50, 5);
            plt.YAxis2.ImageLabel(new System.Drawing.Bitmap("Images/theta.jpg"), 50, 5);
            plt.XAxis2.ImageLabel(new System.Drawing.Bitmap("Images/theta.jpg"), 50, 5);

            plt.YAxis2.Ticks(true);
            plt.XAxis2.Ticks(true);

            TestTools.SaveFig(plt);
        }
Example #10
0
        public void Test_FigureBackground_DefaultIsOpaqueWhite()
        {
            var plt = new ScottPlot.Plot(600, 400);

            plt.PlotSignal(DataGen.Sin(51));

            var mean1 = TestTools.MeanPixel(plt.GetBitmap());

            plt.Style(figBg: Color.White);
            var mean2 = TestTools.MeanPixel(plt.GetBitmap());

            Assert.AreEqual(mean2.A, mean1.A);
            Assert.AreEqual(mean2.R, mean1.R);
            Assert.AreEqual(mean2.G, mean1.G);
            Assert.AreEqual(mean2.B, mean1.B);
        }
Example #11
0
        public void Test_FigureBackground_ColorCanBeSet()
        {
            var plt = new ScottPlot.Plot(600, 400);

            plt.PlotSignal(DataGen.Sin(51));

            var mean1 = TestTools.MeanPixel(plt.GetBitmap());

            plt.Style(figBg: Color.Blue);
            var mean2 = TestTools.MeanPixel(plt.GetBitmap());

            // we made the background white->blue, meaning we preserved blue while reducing red and green
            Assert.AreEqual(mean2.A, mean1.A);
            Assert.Less(mean2.R, mean1.R);
            Assert.Less(mean2.G, mean1.G);
            Assert.AreEqual(mean2.B, mean1.B);
        }
Example #12
0
        public FormsPlot()
        {
            InitializeComponent();

            rightClickMenu = new ContextMenuStrip();
            rightClickMenu.Items.Add("Save Image");
            rightClickMenu.Items.Add("Settings");
            rightClickMenu.Items.Add("Help");
            rightClickMenu.ItemClicked += new ToolStripItemClickedEventHandler(RightClickMenuItemClicked);

            pbPlot.MouseWheel += PbPlot_MouseWheel;

            isDesignerMode = Process.GetCurrentProcess().ProcessName == "devenv";

            plt = new Plot();
            plt.Style(Style.Control);
            settings = plt.GetSettings(showWarning: false);

            PbPlot_MouseUp(null, null);
            PbPlot_SizeChanged(null, null);
        }
Example #13
0
        public static void SetStyle(Plot existingPlot, Style style)
        {
            switch (style)
            {
            case (Style.Black):
                existingPlot.Style(
                    figBg: Color.Black,
                    dataBg: Color.Black,
                    grid: ColorTranslator.FromHtml("#2d2d2d"),
                    tick: ColorTranslator.FromHtml("#757575"),
                    label: ColorTranslator.FromHtml("#b9b9ba"),
                    title: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Blue1):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#07263b"),
                    dataBg: ColorTranslator.FromHtml("#0b3049"),
                    grid: ColorTranslator.FromHtml("#0e3d54"),
                    tick: ColorTranslator.FromHtml("#145665"),
                    label: ColorTranslator.FromHtml("#b5bec5"),
                    title: ColorTranslator.FromHtml("#d0dae2")
                    );
                break;

            case (Style.Blue2):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#1b2138"),
                    dataBg: ColorTranslator.FromHtml("#252c48"),
                    grid: ColorTranslator.FromHtml("#2c334e"),
                    tick: ColorTranslator.FromHtml("#bbbdc4"),
                    label: ColorTranslator.FromHtml("#bbbdc4"),
                    title: ColorTranslator.FromHtml("#d8dbe3")
                    );
                break;

            case (Style.Blue3):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#001021"),
                    dataBg: ColorTranslator.FromHtml("#021d38"),
                    grid: ColorTranslator.FromHtml("#273c51"),
                    tick: ColorTranslator.FromHtml("#d3d3d3"),
                    label: ColorTranslator.FromHtml("#d3d3d3"),
                    title: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Gray1):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#31363a"),
                    dataBg: ColorTranslator.FromHtml("#3a4149"),
                    grid: ColorTranslator.FromHtml("#444b52"),
                    tick: ColorTranslator.FromHtml("#757a80"),
                    label: ColorTranslator.FromHtml("#d6d7d8"),
                    title: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Gray2):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#131519"),
                    dataBg: ColorTranslator.FromHtml("#262626"),
                    grid: ColorTranslator.FromHtml("#2d2d2d"),
                    tick: ColorTranslator.FromHtml("#757575"),
                    label: ColorTranslator.FromHtml("#b9b9ba"),
                    title: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Light1):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#FFFFFF"),
                    dataBg: ColorTranslator.FromHtml("#FFFFFF"),
                    grid: ColorTranslator.FromHtml("#ededed "),
                    tick: ColorTranslator.FromHtml("#7f7f7f"),
                    label: ColorTranslator.FromHtml("#000000"),
                    title: ColorTranslator.FromHtml("#000000")
                    );
                break;

            case (Style.Light2):
                existingPlot.Style(
                    figBg: ColorTranslator.FromHtml("#e4e6ec"),
                    dataBg: ColorTranslator.FromHtml("#f1f3f7"),
                    grid: ColorTranslator.FromHtml("#e5e7ea"),
                    tick: ColorTranslator.FromHtml("#77787b"),
                    label: ColorTranslator.FromHtml("#000000"),
                    title: ColorTranslator.FromHtml("#000000")
                    );
                break;

            case (Style.Control):
                existingPlot.Style(
                    figBg: SystemColors.Control,
                    dataBg: Color.White,
                    grid: Color.LightGray,
                    tick: Color.Black,
                    label: Color.Black,
                    title: Color.Black
                    );
                break;

            default:
                existingPlot.Style(
                    figBg: Color.White,
                    dataBg: Color.White,
                    grid: Color.LightGray,
                    tick: Color.Black,
                    label: Color.Black,
                    title: Color.Black
                    );
                break;
            }
        }
Example #14
0
        public static void SetStyle(Plot existingPlot, Style style)
        {
            // TODO: this system really needs refactoring...
            switch (style)
            {
            case (Style.Black):
                existingPlot.Style(
                    figureBackground: Color.Black,
                    dataBackground: Color.Black,
                    grid: ColorTranslator.FromHtml("#2d2d2d"),
                    tick: ColorTranslator.FromHtml("#757575"),
                    axisLabel: ColorTranslator.FromHtml("#b9b9ba"),
                    titleLabel: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Blue1):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#07263b"),
                    dataBackground: ColorTranslator.FromHtml("#0b3049"),
                    grid: ColorTranslator.FromHtml("#0e3d54"),
                    tick: ColorTranslator.FromHtml("#145665"),
                    axisLabel: ColorTranslator.FromHtml("#b5bec5"),
                    titleLabel: ColorTranslator.FromHtml("#d0dae2")
                    );
                break;

            case (Style.Blue2):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#1b2138"),
                    dataBackground: ColorTranslator.FromHtml("#252c48"),
                    grid: ColorTranslator.FromHtml("#2c334e"),
                    tick: ColorTranslator.FromHtml("#bbbdc4"),
                    axisLabel: ColorTranslator.FromHtml("#bbbdc4"),
                    titleLabel: ColorTranslator.FromHtml("#d8dbe3")
                    );
                break;

            case (Style.Blue3):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#001021"),
                    dataBackground: ColorTranslator.FromHtml("#021d38"),
                    grid: ColorTranslator.FromHtml("#273c51"),
                    tick: ColorTranslator.FromHtml("#d3d3d3"),
                    axisLabel: ColorTranslator.FromHtml("#d3d3d3"),
                    titleLabel: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Gray1):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#31363a"),
                    dataBackground: ColorTranslator.FromHtml("#3a4149"),
                    grid: ColorTranslator.FromHtml("#444b52"),
                    tick: ColorTranslator.FromHtml("#757a80"),
                    axisLabel: ColorTranslator.FromHtml("#d6d7d8"),
                    titleLabel: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Gray2):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#131519"),
                    dataBackground: ColorTranslator.FromHtml("#262626"),
                    grid: ColorTranslator.FromHtml("#2d2d2d"),
                    tick: ColorTranslator.FromHtml("#757575"),
                    axisLabel: ColorTranslator.FromHtml("#b9b9ba"),
                    titleLabel: ColorTranslator.FromHtml("#FFFFFF")
                    );
                break;

            case (Style.Light1):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#FFFFFF"),
                    dataBackground: ColorTranslator.FromHtml("#FFFFFF"),
                    grid: ColorTranslator.FromHtml("#ededed "),
                    tick: ColorTranslator.FromHtml("#7f7f7f"),
                    axisLabel: ColorTranslator.FromHtml("#000000"),
                    titleLabel: ColorTranslator.FromHtml("#000000")
                    );
                break;

            case (Style.Light2):
                existingPlot.Style(
                    figureBackground: ColorTranslator.FromHtml("#e4e6ec"),
                    dataBackground: ColorTranslator.FromHtml("#f1f3f7"),
                    grid: ColorTranslator.FromHtml("#e5e7ea"),
                    tick: ColorTranslator.FromHtml("#77787b"),
                    axisLabel: ColorTranslator.FromHtml("#000000"),
                    titleLabel: ColorTranslator.FromHtml("#000000")
                    );
                break;

            case (Style.Control):
                existingPlot.Style(
                    figureBackground: SystemColors.Control,
                    dataBackground: Color.White,
                    grid: ColorTranslator.FromHtml("#efefef"),
                    tick: Color.Black,
                    axisLabel: Color.Black,
                    titleLabel: Color.Black
                    );
                break;

            case (Style.Seaborn):
                existingPlot.Style(
                    figureBackground: Color.White,
                    dataBackground: ColorTranslator.FromHtml("#eaeaf2"),
                    grid: Color.White,
                    tick: ColorTranslator.FromHtml("#AAAAAA"),
                    axisLabel: Color.Black,
                    titleLabel: Color.Black
                    );
                break;

            default:
                existingPlot.Style(
                    figureBackground: Color.White,
                    dataBackground: Color.White,
                    grid: ColorTranslator.FromHtml("#efefef"),
                    tick: Color.Black,
                    axisLabel: Color.Black,
                    titleLabel: Color.Black
                    );
                break;
            }
        }
Example #15
0
        public static string chart(string pair)
        {
            List <string> pena = new List <string>();

            System.Net.WebClient wc1 = new System.Net.WebClient();
            int    sum_chart         = 150;
            double last_price        = 0;
            String link_Response     = wc1.DownloadString("https://www.binance.com/api/v1/klines?symbol=" + pair + "&interval=15m&limit=" + sum_chart);

            MatchCollection matchList = System.Text.RegularExpressions.Regex.Matches(link_Response, @"(\d+.\d+)|\d+\d+|\d");

            pena = matchList.Cast <Match>().Select(match => match.Value).ToList();
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            int count      = 0;
            int count_draw = 0;

            //Оишбка в апи hbc в конце несколкьо нулей 0 0 0 0 0
            //введен костыль-переменная
            ScottPlot.OHLC[] ohlcs = new ScottPlot.OHLC[sum_chart];
            var plt = new ScottPlot.Plot(800, 400);

            for (int i = 0; i < sum_chart; i++)
            {
                double Open     = Convert.ToDouble(pena[count_draw + 1]);
                double High     = Convert.ToDouble(pena[count_draw + 2]);
                double Low      = Convert.ToDouble(pena[count_draw + 3]);
                double Close    = Convert.ToDouble(pena[count_draw + 4]);
                double Opentime = ((Convert.ToDouble(pena[count_draw])) / 1000) + (3600 * 3);

                ohlcs[count] = new ScottPlot.OHLC(Open, High, Low, Close, ConvertFromUnixTimestamp(Opentime), 1);
                count_draw   = count_draw + 12;
                count++;
                last_price = Close;
            }

            plt.Title("15 Minute Chart");
            plt.YLabel("Stock Price (" + pair + ")");
            plt.Ticks(dateTimeX: true, dateTimeFormatStringX: "HH:mm:ss", numericFormatStringY: "n");
            plt.PlotCandlestick(ohlcs);
            plt.Style(tick: Color.White, label: Color.White, title: Color.White, dataBg: Color.FromArgb(255, 36, 43, 60), grid: Color.FromArgb(255, 36, 43, 60), figBg: Color.FromArgb(255, 36, 43, 60));
            DateTime date1 = new DateTime();

            date1 = DateTime.Now;

            string name = "PlotTypes" + pair + "№" + date1.Ticks + ".png";

            string name_file  = name;
            string label_name = Convert.ToString(last_price);

            plt.PlotHLine(y: last_price, color: Color.Green, lineWidth: 0.5, label: label_name);
            plt.Legend(backColor: Color.FromArgb(255, 36, 43, 60), location: legendLocation.upperCenter);



            plt.SaveFig(name_file);



            return(name_file);
        }