Вопрос
Это мой первый пост, и я довольно новичок в C ++ и компиляции в целом.
Я собираю программу, которая требует рисования некоторых графиков. Программа создает файл .dat, а затем я должен открыть gnuplot и написать сюжет .dat. Это нормально.
Есть ли способ автоматически открыть gnuplot и показать мне нужный мне сюжет? Я должен использовать некоторую функцию system () в коде для вызова gnuplot, но как мне заставить его построить то, что мне нужно?
Извините за мой не идеальный английский: s
В любом случае, спасибо за внимание!
Решение
В зависимости от вашей ОС вы можете использовать popen (). Это позволит вам запустить процесс gnuplot и просто писать в него, как и любой другой файл *.
Если у вас есть точки данных для построения графика, вы можете передать их в линию с помощью plot " - " ... Точно так же вы можете изучить параметры установить точки стиля данных / линии / точки линий / и т. Д. .
<Ч>Без паузы или сохранения gnuplot прекратит работу в конце потока ввода. В нашем примере это будет, когда достигнут конец файла.
<Ч>Чтобы создать (записать) выходной файл (график), используйте:
set terminal png small
set output "filename.png"
Существует множество вариантов установить терминал . Png обычно там. Если нет, возможно, gif, tiff или jpeg?
Остерегайтесь перезаписи файла!
Вы можете использовать установить размер 2,2 , чтобы увеличить график. Некоторые варианты set terminal также позволяют указывать размер.
Другие советы
Я тоже учусь этому сегодня. Вот небольшой пример, который я приготовил.
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv) {
ofstream file("data.dat");
file << "#x y" << endl;
for(int i=0; i<10; i++){
file << i << ' ' << i*i << endl;
}
file.close();
return 0;
}
Сохраните это как plot.cpp и скомпилируйте это с помощью g ++:
g++ plot.cpp -o plot
Запустите программу, чтобы создать файл .dat:
./plot
Сохраните следующий скрипт gnuplot как plot.plt:
set terminal svg enhanced size 1000 1000 fname "Times" fsize 36
set output "plot.svg"
set title "A simple plot of x^2 vs. x"
set xlabel "x"
set ylabel "y"
plot "./data.dat" using 1:2 title ""
Запустите сценарий с помощью gnuplot, чтобы создать файл .svg:
gnuplot plot.plt
Полученный сюжет будет в plot.svg. Если вы пропустите первые пару строк, которые определяют вывод, он будет отображаться в окне. Повеселись! Р>
Иногда это так просто, как можно подумать
gnuplot file
где файл - это не ваши данные и не файл результатов, а файл с командой, которую вы вводите в командной строке. Просто введите нужные вам команды (либо укажите постоянный файл, либо сгенерируйте его) После выполнения всех команд в этом файле gnuplot завершает работу.
Да, вы можете. Вы можете создать файл, содержащий команды, которые вы в противном случае набрали бы, чтобы настроить график и открыть gnuplot, запущенный из этого файла. Эта ссылка содержит статью, в которой объясняется, как это сделать. Вы также можете выводить в EPS или другие графические форматы вывода и отображать график, используя другой виджет, который читает в файле.
Вам может понадобиться использовать флаг '-persist' для команды. Я знаю, что в * nix системах этот флаг необходим, если вы хотите, чтобы окно графика оставалось после завершения и завершения процесса gnuplot.
gnuplot -persist commands.gp
Кроме того, вы можете поместить в файл столько команд gnuplot, сколько вам нужно. В этом отношении файл действует как пакетный скрипт.
Возможно, вам понадобится добавить строку
pause -1
Это покажет график, пока не будет нажата кнопка возврата.
Вероятно, вы видите, что gnuplot запускается и завершает работу до того, как график успеет отобразиться.
Возможно, вам потребуется установить тип терминала. Прочтите документацию по gnuplot. Р>