4

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

2 ответа2

8

Я не думаю, что приведенный выше ответ очень полезен, потому что, когда я пишу это, первый метод результатов 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

Сначала вам нужно определить функцию для построения f() например, использовать символ возведения в степень ** . Постройте два графика, один для вашей функции, а другой для важных моментов. Затем введите данные ваших очков 4 16 и 2 4 . Вы можете прекратить использование e .

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

Теперь вы можете настроить свой рендеринг, как вы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .