2010-03-23 3 views
2

J'ai des données sous la forme { {x,y,z,f}...} J'utilise ListContourPlot3D mais tout ce que je reçois est une boîte vide avec des dimensions -1 à 1 dans chaque direction. Voici mon code:Mathematica ListcontourPlot3D

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

Ce sont les 5 premiers points de mes données :(l'ensemble de 55 points)

{{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] retours {55,4} Si je fais IntegerPart[data5] il le fait correctement si il doit reconnaître les nombres dans mes données.

J'apprécie toutes les idées. Merci.

Répondre

1

Il est difficile de dire sans avoir le jeu de données complet, mais je parie qu'il y a un problème avec votre paramètre Contours -> {1500}. Que se passe-t-il si vous l'omettez complètement ou si vous utilisez une valeur différente?

1

Contours -> num Trace les contours à niveaux égaux. Contours -> {num} Trace le contour f [x, y, z] = num.

Voulez-vous dire le précédent? Je doute que ListContourPlot3D puisse tracer vos données si elles sont trop éparses ou localisées. Pour l'échantillon de données que vous nous avez donné, x et y ne varient pas du tout. Est-ce que x et y varient suffisamment dans votre jeu de données final pour remplir correctement l'espace de coordonnées?

1

@ Davorak's suggestion que l'ensemble de données, tel qu'il est écrit, ne semble pas varier peut être la cause du problème. En supposant que ce n'est pas le cas, essayez de faire pivoter le graphique résultant, et si vous voyez un plan noir apparaître, alors c'est le schéma de couleurs qui est désactivé. Par défaut, ListContourPlot3D produit une surface blanche opaque, et j'ai eu des problèmes où cela ne semblait pas produire quoi que ce soit, mais c'était invisible. La solution: ajoutez une option ContourStyle et définissez-la sur Red.

1

Le problème est l'utilisation de la forme {x, y, z, f} de ListContourPlot3D à basse résolution. je suis tombé sur ce il y a quelques semaines aussi bien, voici un exemple minimal du bug:

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}] 

La solution dans mon cas (j'avais mes données sur une grille) était d'utiliser le formulaire de grille et 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}}] 

Je pense que le problème est que pour le {x, y, z, f} forme, la mise en œuvre utilise l'interpolation d'une manière qui échoue à basse résolution. En augmentant la résolution dans le premier exemple, tout fonctionne:

(* Higher resolution {x,y,z,f} works *) 
ListContourPlot3D[xyzfdata[.2], Contours -> {0}]