2

我有{ {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

4 回答 4

1

@Davorak 的建议是,所写的数据集似乎没有变化,这可能是问题的原因。假设不是这种情况,请尝试旋转生成的图形,如果您看到出现黑色平面,则说明颜色方案已关闭。默认情况下,ListContourPlot3D会产生一个不透明的白色表面,我遇到过它似乎没有产生任何东西,但它只是不可见的问题。解决方案:添加一个ContourStyle选项,并将其设置为类似Red.

于 2010-03-23T15:02:40.953 回答
1

问题是ListContourPlot3D在低分辨率下使用 {x,y,z,f} 形式。几周前我也偶然发现了这个问题,这是该错误的一个最小示例:

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}]
于 2010-03-25T17:51:08.017 回答
1

如果没有整个数据集就很难判断,但我敢打赌,您的 Contours -> {1500} 设置存在问题。如果您完全省略它或使用不同的值会发生什么?

于 2010-03-23T04:29:23.233 回答
1

Contours -> num 绘制 num 个等间距的水平轮廓。等高线 -> {num} 绘制 f[x,y,z] = num 等高线。

你说的是前者吗?如果 ListContourPlot3D 太稀疏或本地化,我怀疑它是否可以绘制您的数据。对于您给我们的数据样本,x 和 y 根本没有变化。最终数据集中的 x 和 y 变化是否足以很好地填充坐标空间?

于 2010-03-23T06:57:54.080 回答