Как построить график вывода консольного приложения C++ Win32?
Вопрос
У меня есть небольшое консольное приложение Win32, которое по сути представляет собой тестовую программу.Я считываю данные, выполняю над ними некоторую обработку и сейчас просто вывожу некоторые числа на консоль.Это не такая уж большая проблема — я могу получить представление о том, как выглядят данные, но их было бы гораздо проще анализировать, если бы существовал способ представления этой информации в виде графика для каждого запуска программного обеспечения.
Недавно я освоил GNUPlot, но не могу придумать простой способ отправки в него данных.Кто-нибудь пробовал это?...или мне стоит попробовать другое графическое приложение?
Excel и OO Calc — отличные инструменты, и я сам много раз загружал в них данные в формате .csv для построения графиков.Однако я надеялся найти способ динамически передавать данные в графическое приложение, чтобы избежать необходимости закрывать/повторно открывать Excel и строить график каждый раз, когда я хочу просмотреть некоторые данные.
Я думаю, что вы можете передать данные в GNUPlot (именно поэтому я об этом упомянул), но подробности того, как это сделать, довольно скудны.
Решение
Для этого вам действительно не нужно прикасаться к VBA.
В Excel вы можете настроить соединение данных с файлом, он поддерживает многие типы файлов, но CSV работает нормально.
- Перейти к элементу списка
- Вкладка «Данные»
- Нажмите «Соединения»
- Нажмите Добавить
- выберите файл
- зайди в свойства соединения - убери галочку с запроса имени файла
- установите необходимый период.
- закройте диалог соединений
- выберите начальную ячейку для импорта данных — ячейку 1a на листе 2
- щелкните существующие соединения
- выберите подключение для передачи данных
- перейдите на рабочий лист 1, добавьте диаграмму и подключите данные.
диаграмма теперь будет обновляться автоматически
это Excel 2007 - но думаю, что в более старой версии это было, и я думаю, что OO может это сделать.
Другие советы
Простой подход — записать данные в формате CSV, а затем импортировать их в электронную таблицу, например Excel или OpenOffice, для построения графика.
Редактировать: Следуя вашему вопросу, я сам заинтересовался GNUPlot — это самое простое описание его использования из командной строки, которое я нашел: http://www.goldb.org/goldblog/CommentView,guid,f378e279-eaa5-4d85-b7d2-0339a7c72864.aspx
Никогда не стоит недооценивать возможности Excel и дампа данных в формате CSV.
Записать данные в файл .csv в формате C++ не очень сложно, и на эту тему существует множество статей, например: здесь, или просто погуглите.
Excel может легко загружать файлы .csv, а затем вы можете просто использовать их для построения любых необходимых графиков.Это особенно полезно, если вам просто нужна быстрая визуальная проверка результатов и т. д.
Excel полностью поддерживает сценарии.Используйте средство записи макросов, чтобы выяснить шаги.Создайте диаграмму на отдельном листе.Затем сохраните диаграмму, используя фильтр GIF.
Фактический импорт выглядит примерно так:
ActiveChart.Export FileName:=something_dot_gif, FilterName:="GIF"
я только что нашел пример передачи данных в gnuplot на сайте Кардиффского университета.Еще не пробовал, но выглядит многообещающе!
[редактировать] ..и другой, который включает в себя некоторые примечания для окон.
Вы можете использовать МатГЛ - он может создавать окно (FLTK, GLUT или Qt) и отображать график внутри.Также он имеет большой набор типов графиков и может работать в консоли.