Questão Marcando especificamente um ponto no gnuplot


Suponha que eu queira traçar um gráfico e quero mostrar no gráfico alguns pontos importantes. Como faço isso no gnuplot? Por exemplo, no gráfico de y = x2, Quero mostrar (2,4) e (4,16).


4


origem




Respostas:


Eu não acho que a resposta acima seja muito útil porque, como estou escrevendo isso, o primeiro método de resultado do google é extremamente insatisfatório.

Ele usa a capacidade do gnuplot de ler stdout para gerar dados, de modo que

plot "< echo '1 2'"

irá colocar um único ponto de dados no ponto x = 1, y = 2.

Isto tem várias deficiências que o tornam praticamente inutilizável.

Primeiro, não há uma boa maneira de passar variáveis ​​para este método, porque ele já faz uso de ambos os tipos de citações. O uso de macros para passar variáveis ​​em declarações sprintf é, portanto, desabilitado, porque um terceiro tipo de cotação seria necessário.

Segundo, requer que o comando de plotagem seja executado para chamar o ponto em existência. Isso significa que, se houver mais de um ponto que eu quero plotar, tenho que anexar instruções de plotagem à declaração de plotagem principal. Se eu quiser fazer isso de qualquer maneira, em vez de apenas uma lista explícita, voltarei a ter que executar uma macro, o que, como já indiquei, não funciona nessa técnica.

O Gnuplot tem duas técnicas muito mais adequadas para produzir um único ponto.

Primeiro, se você só precisa de um marcador em um ponto, você pode usar o tipo de objeto gnuplot para traçar um círculo no ponto, por exemplo,

set object circle at <x>,<y> size <r>

Onde <x> e <y> são as coordenadas do ponto e <r> é o tamanho do círculo a ser desenhado. O círculo pode ser colorido, preenchido, transparente, etc., como qualquer objeto do gnuplot.

Segundo, se você realmente precisa de um marcador com um estilo de ponto específico, você pode usar o gnuplot label comando. Ao definir o texto da etiqueta como vazio e atribuir um tipo de ponto, um ponto será desenhado na coordenada especificada, por exemplo,

set label <i> "" at <x>,<y> point pointtype <n>

define um ponto com o índice de tags <i> no ponto x=<x>, y=<y> com o pointtype <n> (no terminal wxt padrão, n = 1 são cruzes vermelhas, n = 2 são saltiers verdes, n = 3 são asteriscos azuis, etc ...)

Dessa forma, vários pontos a serem plotados podem ser definidos e um comando de plotagem separado para outra função pode ser emitido sem ter que confundir a instrução de plotagem com todos os pontos únicos a serem plotados.


7





Primeiro você precisa definir a função para traçar f() por exemplo, use o símbolo de exponenciação **. Plote dois gráficos, um para a sua função e outro para os pontos importantes. Em seguida, digite os dados dos seus pontos 4 16 e 2 4. Você pode terminar usando e.

f(x) = x ** 2
plot f(x), '-' with points
4 16
2 4
e

Agora você pode personalizar sua renderização como você.


0