2015-05-02 3 views
2

Я не смог найти способ создания сюжета, описанного в названии, знает ли кто-нибудь, как это сделать, если это возможно? Я хотел бы построить поверхность из функции и отобразить точки из файла, а также провести линии между точками и поверхностью. Ниже приведено изображение, которое содержит пример того, что я хотел бы сделать, взятый из вопроса stackoverflow для идентичной задачи (но для другой программы построения графиков).Gnuplot 3D - точки разброса точек и поверхность * и * линии между ними

Graph example

+0

Я мог бы написать что-то, что петли через точку в файле данных, и вычисляет значение г, соответствующее (х, у) каждой точки, используя уравнение для участка поверхности. Затем создайте другой файл, который содержит пары координат (для точки данных и соответствующей точки поверхности), и постройте это как третий ряд данных. Я сделаю это, если в gnuplot нет быстрого решения, но мне было бы интересно, если кто-нибудь знает о методе gnuplot. – Cog77

ответ

1

Вы можете сделать расчеты внутри using заявления GNUPLOT в. Для линий я использую стиль vectors построения графиков, и с arrowstyle variable (или linecolor variable) вы можете выбрать различные цвета в зависимости от значения dz:

set style arrow 1 linecolor rgb 'red' nohead 
set style arrow 2 linecolor rgb 'green' nohead 

splot f(x,y) with lines, \ 
    'points.dat' using 1:2:(f($1,$2)):(0):(0):(dz=$3-f($1,$2)):(dz < 0 ? 1 : 2) with vectors arrowstyle variable,\ 
    '' using 1:2:3 with points pt 7 ps 5 

Я не уверен, что это создает проблемы с Gnuplot 4.6. В вашем случае вы можете также использовать linecolor variable или linecolor rgb variable, чтобы изменить цвет вертикальных линий:

splot f(x,y) with lines, \ 
    'points.dat' using 1:2:(f($1,$2)):(0):(0):(dz=$3-f($1,$2)):(dz < 0 ? 0xff0000 : 0x00ff00) with vectors nohead linecolor rgb variable lw 5,\ 
    '' using 1:2:3 with points pt 7 ps 5 
+0

Отлично, спасибо. У меня есть вопрос о том, чтобы это работало над конкретной версией gnuplot. Я помещаю команды в скрипт и вызываю его из gnuplot в Windows 7. Он отлично работает в gnuplot v5. Однако в v4.6 символы '' 'должны быть изменены на' $$'. После этого изменения я получаю сообщение об ошибке «arrowstyle 0 not found», поэтому я предполагаю, что есть некоторая проблема с тем, как он анализирует условную переменную, которая определяет стиль стрелки. Любая идея, как правильно это исправить? – Cog77

+0

Даже если я заменил '(dz <0? 1: 2)' на '4' и добавил четвертый столбец в файл данных (содержащий либо число« 1 », либо« 2 »), я все равно получаю« стрелочный стиль »0 не найден ". Похоже, что gnuplot v4.6 patchlevel 3 не нравится «переменная стрелки». Я просто использую v5 для этого графика, поскольку он должен быть одним. – Cog77

+0

Использование 'linecolor rgb variable' работает даже в версии 4.0. Спасибо огромное! – Cog77