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. Как работать с несколькими графиками одновременно, где может и для чего понадобиться график в режиме реального времени.
За полдня уже 7 лайков и 50 просмотров. Мне нереально приятно, что еще меня помнят)) Спасибо всем большое! Я по шарпу записываю видео только, когда подобного нет в Интернете, поэтому ролики выходят редко, но зато очень полезные и всегда набирают тысячи просмотров. Думаю этот ролик будет полезен многим!
Очень полезное видео.
Короткое, сжатое и все понятно.
Тъй настоящий учитель.
Спасибо.
Спасибо большое, очень приятный комментарий! Удачи!
Очень полезное видео.Я новичок в использовании C# и все было понятно и подробно объяснено.Спасибо большое.
Большое спасибо, удачи!
Мужик, ты просто лучший ! Спасибо огромное!
Большое спасибо! Удачи вам
very good and useful...thanks ad!!!
thanks you >_
Спасибо тебе огромное!!!!!!!!!!!!!!!!!!!!!!!
Спасибо за комментарий) удачи
Pzdc kakoe haroshoje video!! SPASIBO AGROMNIJE!
Спасибо за комментарий, удачи
Очень полезный ролик. Я пересмотрю его еще раз пять )) Я инженер и мне приспичило создать приложение на винду, чтобы она считывала через усб порт, о ардуино два параметра от датчиков подключенных к ардуино. Если работать с ардуино я умею, то остальное - темный лес. Нужно чтобы приложение не только отображало график в реальном времени, но и могло сохранять данные в эксел, желательно автоматически при обновлении графика. Предстоит еще разобраться, как считыват данные с ардуино. Но самое главное, я завис на начальной стадии с функциями Chart и Timer (( Пожалуйста подскажите если кто знает.
Я поступил следующим образом: установил visual studio 2017 professional - все заработало. По-другому никак не получалось.
Спасибо! Очень полезный ролик!!! К примеру можно сварганить почасовой тренд на сутки. Я сделал массив на 24 элемента, по таймеру каждый час сдвигаю массив и записываю новое значение, и вывожу на график:
for (byte i = 0; i < 24; i++) {chart.Series[0].Points.AddXY(i, Mas[i]); }
Получается что график сдвигается.
Спасибо вам за комментарий и реализацию. Удачи вам!
Огромное спасибо, помогло построить график с распределением температур. Не получалось из-за высокого роста. Как итог программа крашилась
Ну заранее надо знать минимум и максимум по шкале температуры, и сразу задавать эти пределы, можно с запасом +-10, спасибо вам за фидбэк.
то что надо.
Hello! Great vídeo. Thank you. Can you male the code available?
Добрый вечер! Спасибо за столь интересный ролик!
Не могли вы бы приложить исходники, на гитхаб или в комментариях?
Ух ты как быстро первый комментарий). Я бы могу кинуть код с радостью в комменты, но сразу удалил проект после видео(. Извините конечно за такие мувы. Не подумал. но тут код в принципе на 15 строк, думаю можно переписать руками. Впредь буду сохранять проекты.
@@forsytee Окей, спасибо Вам, что учите всех нас))
@@NIKITA-jy5pv Спасибо вам что продолжаете смотреть
А как можно сделать чтоб график не обновлялся полностью , а постепенно перемещался вслед за новыми показаниями?
Ну поиграйся с переменными о которых я говорил несколько раз в конце, конечно можно, вариаций может быть полно, поэтому я и показал где что менять, чтобы так-то и так-то менялось.
Можно так сделать, обновление каждые 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;
}
нужна помощь, как в реал тайме рисовать свечные графики по сокетам? что б можно было допустим 5минутный таймфрейм включить и смотреть чарт акции или крипты
Не знаю
Какая то вакханалия происходит с графиками. С вами можно как то связаться, чтобы вы помогли?
Ну вы тут уже связались) не обещаю помочь)
@@forsytee мне бы код показать)
У меня Visual Studio 2019, элемент Chart, ни в панели элементов, ни в поиске я не нашел, что делать? Как повторить Ваш урок? Может в Visual Studio 2019 нужно использовать другой элемент вместо Chart? Или нужно пополнить библиотеку элементов из вне? Или у меня не полная версия Visual Studio 2019 (я использую Community).
Ну у меня интерпрайз студия, но это никак не должно влиять на наличие чарта. charts доступен как часть .net 4.5 - это я нагуглил, видимо графики зависят не от вижака а от дотнета, а если вижак новый то и дотнет наверное новые и больше 5, на видео дот нет 4.6.1 вроде, ну что-то около 4.5 версии
@@forsyteeБольшое спасибо за подсказку. Я создавал проекты на платформе net 3.5, а там действительно нет Chart-а. Переключился на net 4.8 и все нашлось, причём именно так как в Вашем ролике - через поиск ибо в выпадающем списке элементов, изначально Chart нет. Еще раз большое спасибо. Желаю дальнейших успехов на ниве просвещения. Лично мне было бы интересно построение графиков в декартовых и полярных координатах по данным поступающим из СОМ-порта с возможностью вывода графиков на печать и сохранением результатов файлом на HDD в текстовом или экселевском форматах.
@@ivi6004 Я попобовал переключиться на 4.8 не помогло, даже через поиск не находит. У меня во вкладке ВИД вообще нет панели элементов, там панель инструментов, с выпадающим списком, вобщем вообще не так работает. Никак не могу найти Chart. Может кто-нибудь подскажет как добавить график в 2022 версии визуал студио?
@@ivi6004 То же самое и с Timer
@@FBI0777 Подробно могу ответить в личку
не могу найти chart в 2022 версии
а он в какой-то версии дот нет пропал, почитайте комментарии внизу мы с кем-то это обсуждали. вроде в .нет 4.6.1 он есть а потом пропал.
@@forsytee Спасибо за ответ, нашел коменты внизу, отвечу по ним.
технологии в 22 году не дошли до того этапа, чтоб удалять из массива данные вышедшие за временной интервал и не тереть весь график
Спасибо за комментарий)