2016-04-22 3 views
1

У меня довольно много данных, которые я хотел бы визуализировать в 3d-сетке. Когда яGnuplot поверхностная сетка только в показе в направлении x, почему не y направлении?

splot "surface.csv" u 1:2:7 w p lc rgb "black" ps 0.2 

Я получаю

enter image description here

Когда я

splot "surface.csv" u 1:2:7 w l lc rgb "black" 

Я получаю

enter image description here

Я хотел бы иметь линии, соединяющие все точки данных как в направлении х, так и в направлении y. Неужели это возможно?

Что я могу сделать для достижения y-направленных линий? Мой файл данных организован следующим образом (обратите внимание, что я не могу иметь одинаковое количество точек в пределах одного блока данных)

0 1 z1 
0 2 z2 
0 3 z3 
. 
. 
. 
0 n zn 

20 1 z1 
20 2 z2 
20 3 z3 
. 
. 
. 
20 m zm 

. 
. 
. 

Ошибка в октаве Команда:

octave:1> d=load('surfacefull.csv'); 
octave:2> [y i]=sort(d(:,2)); 
octave:3> d_t=d(:,i); 
error: A(I,J): column index out of bounds; value 905 out of bound 6 
octave:3> dlmwrite('surfacefull_t.csv',d_t," "); 
error: 'd_t' undefined near line 1 column 30 
error: evaluating argument list element number 2 

ответ

1

Есть два способы сделать это, я не уверен, о чем вы спрашивали.

1) Если вы хотите, чтобы интерполировать данные на равномерной сетке, то вы бы использовать dgrid3d: http://gnuplot.sourceforge.net/docs_4.2/node177.html

Некоторые примеры приведены здесь: http://www.gnuplot.info/demo/dgrid3d.html

2) Если вы хотите, чтобы все ваши линии пересекались с линиями без единой сетки, как вы это делали до сих пор, просто переносите свои данные в октаву (или матлаб), чтобы второй пространственный размер менялся медленнее, чем график

splot "surface.csv" u 1:2:5 w l lc rgb "black", \ 
     "surface_t.csv" u 1:2:5 w l lc rgb "black" 

Если связать некоторые данные, которые я смог бы показать пример


Ниже делается с помощью указанной выше команды участка, где файл surface_t.csv был перенесен в Gnu Октав с чем-то вроде

d=load('surfacefull.csv'); 
[y i]=sort(d(:,2)); 
d_t=d(i,:); 
dlmwrite('surfacefull_t.csv',d_t," "); 

У меня есть сценарий для интервала записи, но вы можете сделать это вручную.

+0

Вот данные. https://www.dropbox.com/s/fyz8iz7eert80cb/surfacefull.csv?dl=0 Я нашел в руководстве, что точки не могут быть подключены в обоих направлениях, когда блоки данных не имеют одинакового размера. Но я думал, что могу просто «сшить» их вместе, сделав небольшое перекрытие точек данных. Я обнаружил, что dgrid3d сглаживает данные до неузнаваемого. – Yoda

+0

См. Мое редактирование, вам просто нужно поменять записи вручную, чтобы построить в другом направлении. –

+0

Запуск команд Octave дает мне некоторые ошибки, см. Исходный вопрос. Кроме того, я не понимаю, что вы подразумеваете под «обменивать записи» или «делать интервал записи». – Yoda

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