С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20

Сохранение данных Chart

21.04.2019, 19:54. Показов 3890. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я занимаюсь разработкой прибора для кафедры одного из ВУЗов нашей страны. Сам по образованию химик, поэтому в программировании знаю чуть больше, чем ничего. Сейчас пишу программу, которая получает данные через com port и строит графики в реальном времени. Из-за огромного количества информации, получаемой с прибора, построение графиков в excel вручную является не самой хорошей идеей. Сейчас сохраняю графики делая скриншот. Однако просматривать картинки уже не так удобно, т.к. нет возможности изменять масштаб по осям.
Подскажите пожалуйста способ сохранения графиков в vb.net. Как это осуществить с выбором места на компьютере? Возможно ли сохранение в более удобном формате, чем просто картинка?

Заранее благодарю!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2019, 19:54
Ответы с готовыми решениями:

Сохранение в битмап из chart
Подскажите, как сохранить изображение из chart'а? Добавлено через 1 час 19 минут Нужно с выбором места сохранения и редактированием...

Сохранение Chart графика
Здравствуйте, коллеги. Импортирую данные из Excel в StringGrid и строю диаграммы. Подумал, что не плохо было бы диаграммы сохранить в...

Сохранение Chart в .jpeg
Здравствуйте. Есть код для сохранения графика Chart в .jpeg, но он не работает: сохраняется пустой рисунок. Где ошибка? uses Jpeg; ...

13
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
21.04.2019, 20:19
Сохраняйте данные, по которым строите график, в виде текстового файла (или в другом формате который вы считаете более подходящем). При необходимости восстановить график просто подгружаете этот файл в свою программу.
0
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
21.04.2019, 21:30  [ТС]
Хорошо, тогда такой вопрос. Как из текстового файла .txt построить график, загрузив в программу? Может есть у Вас какие-нибудь материалы по этому поводу?
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
21.04.2019, 21:50
Libis, в каком виде вы передаете данные на Chart (X,Y; пример). Одна кривая или несколько?
0
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
21.04.2019, 22:07  [ТС]
ovva, Данные получаю в таком виде (см. приложение). В реальном времени программа разделяет новую полученную строку с помощью split, строит около 20 графиков различных зависимостей и делает некоторые необходимые расчеты. Строчки поступают в программу каждую секунду и их число может превышать 10 000. На chart я передаю данные с таким образом:
Form29.Chart1.Series("Производная тока, мА/с").Points.AddY(I)
Form29.Chart1.Series("Производная тока, мА/с").IsValueShownAsLabel = True
Миниатюры
Сохранение данных Chart  
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
22.04.2019, 01:00
Лучший ответ Сообщение было отмечено Libis как решение

Решение

Цитата Сообщение от Libis Посмотреть сообщение
Как из текстового файла .txt построить график, загрузив в программу?
Прикладываю пример проекта. Среда: Win10, VS2010, Net 4.0. Обратите внимание, вы можете увеличивать/уменьшать изображение участка графика (выделив участок мышью).
Миниатюры
Сохранение данных Chart   Сохранение данных Chart  
Вложения
Тип файла: rar ExampleOfGraph.rar (13.3 Кб, 36 просмотров)
1
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
22.04.2019, 10:47  [ТС]
ovva, очень хороший пример. Однако не очень понятен принцип разделения. Документ который загружается в эту программу должен быть обязательно формата DAT? Как нужно изменить этот исходный файл (см. приложение), чтобы Ваша программа смогла разделить ее на столбцы и построить графики?

Заранее благодарю за оказанную помощь!
Вложения
Тип файла: txt 22.03 — копия.txt (17.5 Кб, 19 просмотров)
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
22.04.2019, 14:11
Лучший ответ Сообщение было отмечено Libis как решение

Решение

Цитата Сообщение от Libis Посмотреть сообщение
Как нужно изменить этот исходный файл (см. приложение), чтобы Ваша программа смогла разделить ее на столбцы и построить графики?
Не вижу смысла изменять данные, если можно изменить код. Изменений в коде будет немного.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Private Sub LoadData2_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click
        OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        OpenFileDialog1.FileName = "*.txt"
        If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Try
                Dim fn As String = OpenFileDialog1.FileName
                Dim dt() As String = File.ReadAllLines(fn)
                ReDim dt1(dt.Length - 1) : ReDim dt2(dt.Length - 1) : ReDim dt3(dt.Length - 1)
                Dim i As Integer
                For Each s As String In dt
                    Dim dd() As Double = s.Split({Chr(32)}, StringSplitOptions.RemoveEmptyEntries).Select(Function(x) CDbl(x)).ToArray()
                    dt1(i) = dd(0)
                    dt2(i) = dd(1)
                    dt3(i) = dd(2)
                    i += 1
                Next
                Button2.Enabled = True
                Button4.Enabled = True
                Button5.Enabled = True
            Catch Ex As Exception
                MsgBox(Ex.Message)
            End Try
        End If
    End Sub
И в процедуре ShowGrf подправьте
VB.NET
1
2
3
4
5
6
7
8
            Select Case sName
                Case "Data 1"
                    .AxisY.Interval = 0.5
                Case "Data 2"
                    .AxisY.Interval = 0.5 '0.2
                Case "Data 3"
                    .AxisY.Interval = 50 '2
            End Select
Отредактировал файл с данными: заменил десятичный разделитель на точку (т.к. у меня в системе установлена точка). Последнее поле в данных это просто порядковый номер записи и его можно игнорировать.
Цитата Сообщение от Libis Посмотреть сообщение
Документ который загружается в эту программу должен быть обязательно формата DAT?
Расширение "dat" в данном случае не определяет какой-то специальный формат, я его установил, чтобы было проще выделять файлы данных, но по смыслу это обычный текстовый файл.
Миниатюры
Сохранение данных Chart   Сохранение данных Chart  
2
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
23.04.2019, 11:24  [ТС]
ovva, Спасибо Вам огромное! Осталось уточнить пару нюансов . Каким образом можно построить график по оси ox и oy (т.е. зависимость первого столбика от второго и тд.) Можно ли как то провести необходимые расчеты по этим данным, например взять производную?
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
23.04.2019, 15:06
Цитата Сообщение от Libis Посмотреть сообщение
Осталось уточнить пару нюансов . Каким образом можно построить график по оси ox и oy (т.е. зависимость первого столбика от второго и тд.)
На мой взгляд, это совсем не нюансы, а базовый вопрос – что вы хотите получить от этих данных. Например вы хотите построить график некоторой функции Y=f(X) (или в ваших данных Поле2=f(Поле1)). Здесь предполагается, что каждому значению X соответствует свое значение Y. Посмотрим на ваши данные, например значению X=3.16 соответствует 11 различных значений Y.
3.16 -0.06
3.16 0.13
3.16 -0.38
3.16 0.44
3.16 0.44
3.16 0.51
3.16 0.51
3.16 0.70
3.16 0.82
3.16 -0.89
3.16 -1.14
Отсюда вывод, прежде чем что-то рисовать данные нужно подготовить (перейти от сырых отсчетов с датчиков к некоторым качественным данным).
1
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
23.04.2019, 17:24  [ТС]
ovva, Да, необходимо просто взять зависимость одного поля от другого. Допустим Поле2=f(поле1). И еще нужно отдельно взять производную по каждому полю и построить графики ( пример: производной поля1 от времени. Т.е. (10-е значение минус 1-е значение) делить на десять, потом (20е значение минус 11 значение) делить на 10 и т.д. -это по оси oy. За ОХ можно ничего не принимать).
0
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
02.05.2019, 21:59  [ТС]
ovva, здравствуйте. Мне необходима Ваша помощь. Мне нужно разделить один столбик с данными на другой и построить график. Т.е. по Вашей программе dt1()/dt2(). пытался создать новый массив, но не получилось. Может Вы подскажете как это осуществить. Заранее благодарен!
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
02.05.2019, 23:01
Лучший ответ Сообщение было отмечено Libis как решение

Решение

Libis, привожу проект. Ваше предложение (1/2) см. LoadData3, Show 1/2. Имеется некоторое дублирование кода, оставил специально, чтобы проще было разбираться.
Вложения
Тип файла: rar ExampleOfGraph.rar (18.7 Кб, 23 просмотров)
2
0 / 0 / 0
Регистрация: 04.03.2019
Сообщений: 20
02.05.2019, 23:23  [ТС]
ovva, Спасибо Вам огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2019, 23:23
Помогаю со студенческими работами здесь

Сохранение графика chart в файл через диалоговое окно SaveFileDialog
Здравствуйте. Пусть имеется Chart, который отображает данные в виде графика, возник вопрос, как прикрутить диалоговое окно save для...

Сохранение значения графика chart в текстовый файл через диалоговое окно
Здравствуйте. Пусть имеется Chart, который отображает данные в виде графика, возник вопрос, как сохранить значения графика в текстовый файл...

Редактирование пользователем данных из базы данных и сохранение уже отредактированных данных
Здравствуйте форумчане!Вынужден обратиться к вам,так как сам ничего не могу сделать:( У меня такая задача: создать небольшой сайтик,в...

MS Chart группировка данных
Возник вопрос. Есть две одинаковые даты в диаграмме. Причем информация о датах берется из БД. Нужно чтобы все одинаковые даты...

Очистка данных в Chart
Здравствуйте. Есть два массива чисел, которые надо отобразить в Chart по очереди. Как из серий удалить все данные первого массива, для того...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru