2016-12-14 6 views
0

У меня есть данные 4D X, Y, Z плюс поле. Я хотел бы сделать 4d-график поля, ограниченного сферой. Я уже использую splot w pm3d, чтобы иметь цветную полосу на сфере, проиндексированной моим полем, но я думаю, что это было бы более читаемым, если бы я мог добавить 3d контурные линии.4D контурные графики в gnuplot

Я хотел бы что-то вроде последнего примера «функции участка» (ориентация белка) на http://www.originlab.com/index.aspx?go=Products/Origin/Graphing

Возможно ли это в Gnuplot? Если да, то как это сделать?

+0

Gnuplot не может делать это из коробки. В любом случае вам нужно подготовить свои данные с отдельной программой до ее создания. Но я не могу сказать вам, как ... – Christoph

ответ

1

Gnuplot не может генерировать 4d контурные графики.

Но если я правильно понял, у вас есть специальный случай, у вас действительно нет данных 4d. Координата z зависит от x и y таких, что точка находится на сфере. Возможно, это можно использовать для получения контуров.

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

Я попытался это:

  • Отдельные точки на верхней половине из точек нижней части сферы, нам нужно это разделение для знака г.
  • Постройте контуры двух половин в двух файлах данных contour_l.dat и contour_u.dat. Это будет отображать только координаты x и y.
  • Объединить исходный файл данных и два файла данных контура в один график. Pythagoras мог помочь восстановить координаты z для файлов данных контура.

Это сценарий:

set pm3d depthorder interpolate 5,5 
set hidden3d front 

unset surface 
set contour surface 

set zrange [0:1.1] 
set table "contour_u.dat" 
splot "sh.dat" using 1:2:4 w l 
unset table 

set zrange [-1.1:0] 
set table "contour_l.dat" 
splot "sh.dat" using 1:2:4 w l 
unset table 

set surface 
unset contour 

set xrange [-1.1:1.1] 
set yrange [-1.1:1.1] 
set zrange [-1.1:1.1] 
set xyplane relative 0.0 

set terminal pngcairo size 640,640 
set output "c.png" 

unset key 

splot "sh.dat" using 1:2:3:4 w pm3d, \ 
     "contour_u.dat" using 1:2:(sqrt(1.0-($1*$1+$2*$2))):3 w l lc rgb "black",\ 
     "contour_l.dat" using 1:2:(-sqrt(1.0-($1*$1+$2*$2))):3 w l lc rgb "black" 

Вы не отправлял данные, поэтому я взял один из сферических гармоник. С Gnuplot 4.6, я получаю следующий результат:

sphere with pm3d and contour lines

Как вы можете видеть, это еще не совершенны. Контур при x = 0 должен быть исследован, и если я удалю линию "sh.dat" w pm3d, изображение станет очень странным.

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