Pergunta

Este é meu primeiro post e estou muito um novato em C ++ e compilar em geral.

Estou compilando um programa que requer alguns gráficos a serem desenhados. O programa cria um arquivo .dat e então eu deveria abrir gnuplot e escrever enredo ' .dat'. Isso é bom.

Existe uma maneira de fazer gnuplot automaticamente aberto e me mostrar a necessidade trama I? Eu deveria usar alguma função system () no código para gnuplot chamada, mas como posso fazê-lo traçar o que eu preciso?

Desculpem a minha não-perfeito Inglês: s

Obrigado pela atenção de qualquer maneira!

Foi útil?

Solução

Dependendo do seu sistema operacional, você pode ser capaz de usar popen (). Isso permitiria gerar um processo gnuplot e apenas acabou de escrever a ele como qualquer outro arquivo *.

Se você tem datapoints a trama, você pode passá-los em linha com o plot "-" ... opção. Da mesma forma, você pode querer explorar Definir tipo de dados pontos / linhas / linespoints / etc opções.


sem pausa ou persistir, gnuplot cessará de fim-de-entrada-corrente. No seu exemplo caso, que seria quando é atingido o fim do arquivo.


Para produzir (escrever) um arquivo de saída (gráfico), use:

set terminal png small
set output "filename.png"

Há muitas opções para terminal de set . Png é geralmente lá. Se não, talvez GIF, TIFF ou JPEG?

Watch para fora para substituir o arquivo!

Você pode querer usar Conjunto de tamanho 2,2 para fazer um gráfico maior. Alguns terminal de set também variantes permitem que você especifique o tamanho.

Outras dicas

Estou aprendendo isso hoje também. Aqui está um pequeno exemplo eu cozinhei-se.

#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;
}

Save que, como plot.cpp e compilação que com g ++:

g++ plot.cpp -o plot

Execute o programa para criar o arquivo .dat:

./plot

Salvar o seguinte script gnuplot como 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 ""

Execute o script com gnuplot para gerar seu arquivo .svg:

gnuplot plot.plt

A trama resultante será em plot.svg. Se você deixar de fora as primeiras linhas casal que especificam a saída, ele irá processar em uma janela. Diverta-se!

Às vezes é tão fácil como se pode pensar

    gnuplot file

onde o arquivo não é nem seus dados, nem o seu arquivo de resultado, mas um arquivo com o comando, você digita o comando. Basta digitar lá seus comandos que você precisa (ou arquivo constante você tem ou gerá-lo). Depois de executar todos os comandos em que as saídas de arquivo gnuplot.

Sim, pode. Você pode fazer um arquivo que tem os comandos que, de outra forma digitar para configurar o enredo e gnuplot aberta em execução a partir desse ficheiro. Este link tem um artigo que explica como fazê-lo. Você também pode saída para um EPS ou outros formatos de saída gráfica e exibir a trama usando outro widget que lê no arquivo.

Você pode precisar usar o sinalizador '-persist' para o comando. Eu sei que em sistemas * nix, esta bandeira é necessário se você quer janela do gráfico para permanecer após o processo de gnuplot foi concluída e saiu.

gnuplot -persist commands.gp

Além disso, você pode colocar como muitos comandos gnuplot que quiser no arquivo. O arquivo age como uma espécie de script em lotes a este respeito.

Você pode precisar adicionar uma linha

pause -1

Isto irá mostrar o enredo até o retorno foi pressionado.
O que você provavelmente está vendo é que gnuplot corre e sai antes que o lote tem tempo para ser exibido.

Pode ser necessário definir um tipo de terminal. Leia a documentação do gnuplot sobre isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top