Специально отмечая точку в gnuplot

21848

Предположим, я хочу построить график и показать некоторые важные моменты на графике. Как мне это сделать в gnuplot? Например, на графике y = x 2 я хочу показать (2,4) и (4,16).

4

2 ответа на вопрос

7
KDN

Я не думаю, что приведенный выше ответ очень полезен, потому что, поскольку я пишу это, первый метод результата Google крайне неудовлетворителен.

Он использует способность gnuplot читать стандартный вывод для генерации данных, так что

plot "< echo '1 2'" 

поместит одну точку данных в точку x = 1, y = 2.

Это имеет несколько недостатков, которые делают его практически непригодным для использования.

Во-первых, нет хорошего способа передачи переменных в этот метод, потому что он уже использует оба типа кавычек. Поэтому использование макросов для передачи переменных в операторах sprintf отключено, поскольку необходим третий тип цитирования.

Во-вторых, требуется запустить команду plot, чтобы вызвать точку. Это означает, что если я хочу построить более одной точки, я должен добавить операторы графика к основному оператору графика. Если я хочу сделать это каким-либо образом с помощью сценариев, а не просто как явный список, я возвращаюсь к необходимости запускать макрос, который, как я уже указывал, не работает для этой техники.

У Gnuplot есть две техники, которые намного больше подходят для получения одной точки.

Во-первых, если вам просто нужен маркер в точке, вы можете использовать тип объекта gnuplot для построения круга в точке, например

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

где <x>и <y>- координаты точки и <r>размер круга, который нужно нарисовать. Круг может быть цветным, заполненным, прозрачным и т. Д., Как и любой объект gnuplot.

Во-вторых, если вам действительно нужен маркер с определенным стилем точек, вы можете использовать labelкоманду gnuplot . Установив текст метки пустым и назначив тип точки, точка будет нарисована в указанной координате, например,

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

устанавливает точку с индексом тега <i>в точке x=<x>, y=<y>с типом точки <n>(в терминале wxt по умолчанию n = 1 - красные крестики, n = 2 - зеленые соли, n = 3 - синие звездочки и т. д.)

Таким образом, можно задать несколько точек для построения графика, и можно выдать отдельную команду построения для другой функции без необходимости загромождать оператор заговора со всеми отдельными точками, которые будут отображаться.

0
IamaTacos

First you need to define the function to plot f() for example, use exponentiation symbol **. Plot two graphs, one for your function and the other one for the important points. Then type the data of your points 4 16 and 2 4. You can terminate using e.

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

Now you can customize your rendering as you wich.

Похожие вопросы