Mathematica ListcontourPlot3D - PullRequest
       4

Mathematica ListcontourPlot3D

2 голосов
/ 23 марта 2010

У меня есть данные в форме { {x,y,z,f}...} Я использую ListContourPlot3D, но все, что я получаю, это пустое поле с размерами от -1 до 1 в каждом направлении. Вот мой код:

ListContourPlot3D[data5, PlotRange -> All, 
  AxesLabel -> {"[Beta]", "[Omega]", "Vo"}, Contours -> {1500}].

Это первые 5 баллов моих данных :( весь набор имеет 55 баллов)

{{200, 20000 10^(1/3), 2000, 1226}, 
 {200, 20000 10^(1/3), 2600, 1422}, 
 {200, 20000 10^(1/3), 3200, 1581}, 
 {200, 20000 10^(1/3), 3800, 1761}, 
 {200, 20000 10^(1/3), 4400, 1872}}

Dimensions[data5] возвращает {55,4} Если я делаю IntegerPart[data5], он делает это правильно, поэтому он должен распознавать числа в моих данных.

Я ценю любые идеи. Спасибо.

Ответы [ 4 ]

1 голос
/ 25 марта 2010

Проблема в том, что используется форма {x, y, z, f} ListContourPlot3D в низком разрешении.Я также наткнулся на это несколько недель назад, вот минимальный пример ошибки:

xyzfdata[r_] := Flatten[#, 2] &@Table[{x, y, z, x^2 + y^2 + z^2 - 1}, 
  {x, -2, 2, r}, {y, -2, 2, r}, {z, -2, 2, r}];
(* Low resolution {x,y,z,f} fails *) 
ListContourPlot3D[xyzfdata[1], Contours -> {0}]

Решение в моем случае (у меня были данные в сетке) состояло в том, чтобы использовать форму сетки иDataRange:

fdata[r_] := Table[x^2 + y^2 + z^2 - 1, 
  {z, -2, 2, r}, {y, -2, 2, r}, {x, -2, 2, r}];
(* Low resolution works ok for array data *)
ListContourPlot3D[fdata[1], Contours -> {0}, 
  DataRange -> 2 {{-1, 1}, {-1, 1}, {-1, 1}}]

Я думаю, проблема в том, что для формы {x, y, z, f} реализация использует интерполяцию таким образом, что происходит сбой при низком разрешении.С увеличением разрешения в первом примере все работает:

(* Higher resolution {x,y,z,f} works *)
ListContourPlot3D[xyzfdata[.2], Contours -> {0}]
1 голос
/ 23 марта 2010

Контуры -> num Графики num одинаково расположенных контуров уровней.Контуры -> {num} Отображает контур f [x, y, z] = num.

Вы имели в виду первое?Я сомневаюсь, что ListContourPlot3D может построить ваши данные, если они слишком редки или локализованы.Для образца данных, которые вы дали нам, x и y не меняются вообще.Достаточно ли различаются x и y в вашем конечном наборе данных, чтобы хорошо заполнить координатное пространство?

1 голос
/ 23 марта 2010

@ 1001 * предложение Даворака о том, что набор данных, как написано, не изменяется, может быть причиной проблемы. Предполагая, что это не так, попробуйте повернуть получившееся изображение, и если вы видите, что появляется черная плоскость, то это цветовая схема, которая отключена. По умолчанию ListContourPlot3D создает непрозрачную белую поверхность, и у меня были проблемы, когда казалось, что она ничего не производит, но она была просто невидимой. Решение: добавьте параметр ContourStyle и установите для него что-то вроде Red.

1 голос
/ 23 марта 2010

Трудно сказать, не имея всего набора данных, но держу пари, что проблема с настройками Contours -> {1500}Что произойдет, если вы вообще опустите его или используете другое значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...