2015-12-11 6 views
3

Допустим, я следующий простой файл GNUPLOT:Gnuplot: Отключить часть команды участка

set term pdf 
set output "test.pdf" 

plot\ 
    sin(x),\ 
    cos(x),\ 
    0.5 

Теперь я просто хочу, чтобы временно закомментировать строку с cos(x),\.

Однако использование символа комментария # приводит к ошибочной команде gnuplot.

Я ищу решение без движущихся строк кода. Я просто хочу использовать функцию комментариев для моего редактора.

+0

Нет способа получить это, см. Http://stackoverflow.com/q/30868244/2604213 – Christoph

+0

Это очень плохо. Я думаю, что это было бы хорошим дополнением к gnuplot для необязательного отключения продолжения строки в комментариях. – Hotschke

+0

Были также дискуссии по списку рассылки: http://gnuplot.10905.n7.nabble.com/line-continuation-of-comments-td11266.html http://gnuplot.10905.n7.nabble.com/Comments -and-continuation-lines-td19020.html – Hotschke

ответ

4

Это обходной путь. Вы можете разобрать сценарий динамически, чтобы удалить строки с # в целом. Использование grep:

grep -v "#" script | gnuplot 

успешно разобрать это:

plot\ 
    sin(x),\ 
    #cos(x),\ 
    0.5 

где script это имя файла, содержащего код, указанный выше.

+0

Это отличное решение. Спасибо, что поделился. – Hotschke

0

Хотя gnuplot напрямую не поддерживает то, о чем вы просите, возможно, вы можете создать обходное решение. Как Gnuplot не Plot неопределенных значений, это может работать

identity = 0 
#identity= 1 
name=identity ? "cos(x)" : '' 

plot sin(x), (1/identity)*cos(x) t name 

В зависимости от переключения ли вы комментарии или выключен, переменная identity будет иметь значение 0 или 1.
В первом случае (т. Е. identity = 0) результат (1/identity) (и, следовательно, (1/identity)*cos(x)) не определен, и gnuplot не будет его строить.
Убрать комментарий в приведенном выше примере identity будет равен 1. В этом случае результат (1/identity) равен 1, и поэтому (1/identity)*cos(x) идентичен cos(x).

Чтобы показать правильное название (identity = 1) или нет названия на всех (если identity=0), я добавил строку name=identity ? "cos(x)" : ''

Смежные вопросы