Вопрос

Это мой первый пост, и я довольно новичок в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top