Displaying data real-time on a chart in Windows Forms C#. Отображение данных, реальное время, график

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Hello, today I will tell you how to display real-time data on a graph in Windows Forms in C#. We will learn with you:
    1. Control on the Chart form
    2. How to set up a graph, how to set the type of graph (Line, Spline), how to set the color of the graph, how to set the thickness of the graph
    3. How to display multiple graphs in parallel (Series)
    4. How to sign a schedule (Titles)
    5. How to change the legend of the graph, how to remove the legend of the graph (Legends)
    6. How to work with the timer, how to start the timer, how to set the timer interval
    7. How to handle the timer tick
    8. How to set the Y axis, how to set the minimum and maximum for the Y axis
    9. How to configure the X-axis, how to set the minimum and maximum for the X-axis
    10. How to set the X-axis real time, how to set the format and type of the X-axis
    11. How to set the X-axis interval
    12. How to output data in real time
    13. How to update the schedule after a given time
    14. How to save values from a graph somewhere
    15. How the timer, the X-axis and the redrawing of the graph are interconnected
    16. How to adjust tick frequency, graph rendering frequency, graph refresh rate, X-axis interval
    17. Where can I get data for the graph
    18. To display random numbers on the graph (class Random)
    19. To display on the graph the numbers that the user enters (Numericdown)
    20. How to work with multiple graphs at the same time, where and for what a graph in real time may be needed.
    Здравствуйте, сегодня я расскажу как выводить на графике данные в режиме реального времени в Windows Forms на языке C#. Мы с вами научимся:
    1. Элемент управления на форме Chart
    2. Как настроить график, как задать тип графика (Line, Spline), как задать цвет графика, как задать толщину графика
    3. Как отобразить несколько графиков параллельно (Series)
    4. Как подписать график (Titles)
    5. Как изменить легенду графика, как убрать легенду графика (Legends)
    6. Как работать с таймером, как запустить таймер, как задать интервал работы таймера
    7. Как обрабатывать тик таймера
    8. Как настроить ось Y, как задать минимум и максимум для оси Y
    9. Как настроить ось X, как задать минимум и максимум для оси X
    10. Как задать оси Х реальное время, как задать формат и тип оси Х
    11. Как задать интервал оси Х
    12. Как выводить данные в режиме реального времени
    13. Как обновить график спустя заданное время
    14. Как сохранить значения с графика куда-либо
    15. Как взаимосвязаны таймер, ось Х и перерисовка графика
    16. Как настроить частоту тика, частоту отрисовки графика, частоту обновления графика, интервал оси Х
    17. Откуда можно получать данные для графика
    18. Выводить на графике случайные числа (class Random)
    19. Выводить на графике числа, которые вводит пользователь (NumericDown)
    20. Как работать с несколькими графиками одновременно, где может и для чего понадобиться график в режиме реального времени.

Комментарии • 45

  • @forsytee
    @forsytee  2 года назад +6

    За полдня уже 7 лайков и 50 просмотров. Мне нереально приятно, что еще меня помнят)) Спасибо всем большое! Я по шарпу записываю видео только, когда подобного нет в Интернете, поэтому ролики выходят редко, но зато очень полезные и всегда набирают тысячи просмотров. Думаю этот ролик будет полезен многим!

  • @IvanIvanov-ig1zx
    @IvanIvanov-ig1zx 10 месяцев назад +2

    Очень полезное видео.
    Короткое, сжатое и все понятно.
    Тъй настоящий учитель.
    Спасибо.

    • @forsytee
      @forsytee  10 месяцев назад

      Спасибо большое, очень приятный комментарий! Удачи!

  • @milanmiljkovic8169
    @milanmiljkovic8169 2 года назад +2

    Очень полезное видео.Я новичок в использовании C# и все было понятно и подробно объяснено.Спасибо большое.

    • @forsytee
      @forsytee  2 года назад

      Большое спасибо, удачи!

  • @artemzharkov620
    @artemzharkov620 2 года назад +1

    Мужик, ты просто лучший ! Спасибо огромное!

    • @forsytee
      @forsytee  2 года назад

      Большое спасибо! Удачи вам

  • @trieutraninh2641
    @trieutraninh2641 Год назад +1

    very good and useful...thanks ad!!!

  • @nikitapavlik4330
    @nikitapavlik4330 Год назад +2

    Спасибо тебе огромное!!!!!!!!!!!!!!!!!!!!!!!

    • @forsytee
      @forsytee  Год назад +1

      Спасибо за комментарий) удачи

  • @KDuubi
    @KDuubi 10 месяцев назад +1

    Pzdc kakoe haroshoje video!! SPASIBO AGROMNIJE!

    • @forsytee
      @forsytee  10 месяцев назад

      Спасибо за комментарий, удачи

  • @FBI0777
    @FBI0777 Год назад +2

    Очень полезный ролик. Я пересмотрю его еще раз пять )) Я инженер и мне приспичило создать приложение на винду, чтобы она считывала через усб порт, о ардуино два параметра от датчиков подключенных к ардуино. Если работать с ардуино я умею, то остальное - темный лес. Нужно чтобы приложение не только отображало график в реальном времени, но и могло сохранять данные в эксел, желательно автоматически при обновлении графика. Предстоит еще разобраться, как считыват данные с ардуино. Но самое главное, я завис на начальной стадии с функциями Chart и Timer (( Пожалуйста подскажите если кто знает.

    • @FBI0777
      @FBI0777 Год назад

      Я поступил следующим образом: установил visual studio 2017 professional - все заработало. По-другому никак не получалось.

  • @Артем-у1ы6с
    @Артем-у1ы6с 2 года назад +1

    Спасибо! Очень полезный ролик!!! К примеру можно сварганить почасовой тренд на сутки. Я сделал массив на 24 элемента, по таймеру каждый час сдвигаю массив и записываю новое значение, и вывожу на график:
    for (byte i = 0; i < 24; i++) {chart.Series[0].Points.AddXY(i, Mas[i]); }
    Получается что график сдвигается.

    • @forsytee
      @forsytee  2 года назад

      Спасибо вам за комментарий и реализацию. Удачи вам!

  • @egorow4innikow565
    @egorow4innikow565 2 года назад +1

    Огромное спасибо, помогло построить график с распределением температур. Не получалось из-за высокого роста. Как итог программа крашилась

    • @forsytee
      @forsytee  2 года назад +1

      Ну заранее надо знать минимум и максимум по шкале температуры, и сразу задавать эти пределы, можно с запасом +-10, спасибо вам за фидбэк.

  • @BoddenDeni
    @BoddenDeni Год назад +1

    то что надо.

  • @josemarcos6441
    @josemarcos6441 2 года назад +1

    Hello! Great vídeo. Thank you. Can you male the code available?

  • @NIKITA-jy5pv
    @NIKITA-jy5pv 2 года назад +1

    Добрый вечер! Спасибо за столь интересный ролик!
    Не могли вы бы приложить исходники, на гитхаб или в комментариях?

    • @forsytee
      @forsytee  2 года назад

      Ух ты как быстро первый комментарий). Я бы могу кинуть код с радостью в комменты, но сразу удалил проект после видео(. Извините конечно за такие мувы. Не подумал. но тут код в принципе на 15 строк, думаю можно переписать руками. Впредь буду сохранять проекты.

    • @NIKITA-jy5pv
      @NIKITA-jy5pv 2 года назад +1

      @@forsytee Окей, спасибо Вам, что учите всех нас))

    • @forsytee
      @forsytee  2 года назад +1

      @@NIKITA-jy5pv Спасибо вам что продолжаете смотреть

  • @user-cm5xb5cf2n
    @user-cm5xb5cf2n 2 года назад +2

    А как можно сделать чтоб график не обновлялся полностью , а постепенно перемещался вслед за новыми показаниями?

    • @forsytee
      @forsytee  2 года назад

      Ну поиграйся с переменными о которых я говорил несколько раз в конце, конечно можно, вариаций может быть полно, поэтому я и показал где что менять, чтобы так-то и так-то менялось.

    • @asutpkza2043
      @asutpkza2043 Год назад

      Можно так сделать, обновление каждые 5 сек. :
      Условие проверки времени вставить в timer1_Tick , как у автора ролика
      ░S░a░m░p░l░e░ ░C░o░d░e░
      private int cCount;
      private void timer1_Tick(object sender, EventArgs e)
      {
      chart1.Series[0].Points.AddXY(DateTime.Now, DateTime.Now.Second);
      //int tVal = Math.Abs( cCount - Convert.ToInt32(DateTime.Now.Second));
      if (cCount != Convert.ToInt32(DateTime.Now.Second))
      { //' Math.Abs(cCount - Now.Minute) >= 5
      if (Convert.ToInt32(DateTime.Now.Second) % 5 == 0)
      { //' Math.Abs(cCount - Now.Minute) >= 5
      InitChart(-290, 20);
      cCount = Convert.ToInt32(DateTime.Now.Second);
      //Application.DoEvents();
      }
      }
      //label1.Text = Convert.ToString(DateTime.Now.ToString("hh:mm:ss.fff"));
      }
      private void InitChart(int MinSecInterval=-290, int MaxSecInterval=20)
      {
      chart1.ChartAreas[0].AxisX.Minimum = DateTime.Now.AddSeconds(MinSecInterval).ToOADate();
      chart1.ChartAreas[0].AxisX.Maximum = DateTime.Now.AddSeconds(MaxSecInterval).ToOADate();
      chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
      chart1.ChartAreas[0].AxisX.Interval = (MaxSecInterval - MinSecInterval) / 20;
      }

  • @SaNtAClOuSe5246
    @SaNtAClOuSe5246 2 года назад +1

    нужна помощь, как в реал тайме рисовать свечные графики по сокетам? что б можно было допустим 5минутный таймфрейм включить и смотреть чарт акции или крипты

  • @asapcoder45
    @asapcoder45 Год назад +1

    Какая то вакханалия происходит с графиками. С вами можно как то связаться, чтобы вы помогли?

    • @forsytee
      @forsytee  Год назад

      Ну вы тут уже связались) не обещаю помочь)

    • @asapcoder45
      @asapcoder45 Год назад

      @@forsytee мне бы код показать)

  • @ivi6004
    @ivi6004 2 года назад +1

    У меня Visual Studio 2019, элемент Chart, ни в панели элементов, ни в поиске я не нашел, что делать? Как повторить Ваш урок? Может в Visual Studio 2019 нужно использовать другой элемент вместо Chart? Или нужно пополнить библиотеку элементов из вне? Или у меня не полная версия Visual Studio 2019 (я использую Community).

    • @forsytee
      @forsytee  2 года назад

      Ну у меня интерпрайз студия, но это никак не должно влиять на наличие чарта. charts доступен как часть .net 4.5 - это я нагуглил, видимо графики зависят не от вижака а от дотнета, а если вижак новый то и дотнет наверное новые и больше 5, на видео дот нет 4.6.1 вроде, ну что-то около 4.5 версии

    • @ivi6004
      @ivi6004 2 года назад +1

      @@forsyteeБольшое спасибо за подсказку. Я создавал проекты на платформе net 3.5, а там действительно нет Chart-а. Переключился на net 4.8 и все нашлось, причём именно так как в Вашем ролике - через поиск ибо в выпадающем списке элементов, изначально Chart нет. Еще раз большое спасибо. Желаю дальнейших успехов на ниве просвещения. Лично мне было бы интересно построение графиков в декартовых и полярных координатах по данным поступающим из СОМ-порта с возможностью вывода графиков на печать и сохранением результатов файлом на HDD в текстовом или экселевском форматах.

    • @FBI0777
      @FBI0777 Год назад

      @@ivi6004 Я попобовал переключиться на 4.8 не помогло, даже через поиск не находит. У меня во вкладке ВИД вообще нет панели элементов, там панель инструментов, с выпадающим списком, вобщем вообще не так работает. Никак не могу найти Chart. Может кто-нибудь подскажет как добавить график в 2022 версии визуал студио?

    • @FBI0777
      @FBI0777 Год назад

      @@ivi6004 То же самое и с Timer

    • @ivi6004
      @ivi6004 Год назад

      @@FBI0777 Подробно могу ответить в личку

  • @FBI0777
    @FBI0777 Год назад +1

    не могу найти chart в 2022 версии

    • @forsytee
      @forsytee  Год назад +1

      а он в какой-то версии дот нет пропал, почитайте комментарии внизу мы с кем-то это обсуждали. вроде в .нет 4.6.1 он есть а потом пропал.

    • @FBI0777
      @FBI0777 Год назад +1

      @@forsytee Спасибо за ответ, нашел коменты внизу, отвечу по ним.

  • @AspAsp-l8k
    @AspAsp-l8k 8 месяцев назад +1

    технологии в 22 году не дошли до того этапа, чтоб удалять из массива данные вышедшие за временной интервал и не тереть весь график

    • @forsytee
      @forsytee  8 месяцев назад

      Спасибо за комментарий)