2016-10-05 5 views
1

Ich möchte eine 3D-Grafik mit Punkten (ich glaube, ich habe es geschafft) und eine mathematische Funktion der Menge dieser Punkte. Meine Variable V1 kann zwei Werte von 2 oder 4 annehmen. Wenn also V1 gleich 2 ist, zeichnet eine Funktion, andernfalls ist V1 gleich 4, die andere Funktion plottet. Wenn ich es versuchen, tun diese Meldung angezeigt:Plotten 3D-Funktion und Punkte in SPSS

Erro de GPL: Algebra (. Iter (5000,1000000,10) DOIF (V1 = 2)) Erwartung (oder + oder * oder /: iter (5000, 1000000,10) DOIF (V1 = 2)

Mein Code:

> GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=V2 pacpop V1 
> MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN 
> GPL SOURCE: s=userSource(id("graphdataset"))  
>DATA:V2=col(source(s), name("V2"))  
>DATA: pacpop=col(source(s),name("pacpop"))  
>DATA: V1=col(source(s), name("V1"),unit.category())  
>COORD: rect(dim(1,2,3))  
>GUIDE: axis(dim(1),label("Sexo")) 
> GUIDE: axis(dim(2), label("Rendimento Mensal")) 
> GUIDE: axis(dim(3), label("pacpop"))  
>SCALE: log(dim(2), base(10)) 
>SCALE: log(dim(3), base(10)) 
>SCALE: cat(dim(1), include("2", "4")) 
> ELEMENT: point(position(V1*V2*pacpop)) 
>DATA: p = iter(0,5000,1) 
> DATA: q = iter(5000,1000000,10) 
>DATA: x = iter(0,5000,1) 
>DATA: z =iter(5000,1000000,10) 
>DO IF (V1=2). 
>TRANS: y =eval(100*exp((-x/1654.97)) 
> TRANS: w = eval((10**8.865)/(z**2.186)) 
> ELEMENT: line(position(V1*x*y),color.interior(color."ff0000")) 
> ELEMENT: line(position(V1*z*w), color.interior(color."ff0000")) 
> ELSE. 
> TRANS: r = eval(100*exp((-p/1415.97)) 
>TRANS: s = eval((10**7.065)/(q**2.216)) 
>ELEMENT:line(position(V1*p*r),color.interior(color."ff0000")) 
ELEMENT:line(position(V1*q*s), color.interior(color."ff0000")) 
>END IF. 
> END GPL. 
+1

Sie können eine DO IF in einer GGRAPH-Anweisung nicht mischen. –

Antwort

0

Es gibt keine Notwendigkeit 3d hier zu verwenden, da V1 nur zwei Werte annehmen kann, können Sie einfach diese Zeilen auf der überlagern. gleiche Grafik und sehe, wo sie divergieren, Beispiel unten.Beachten Sie, dass ich p auf einen Bereich von 1 bis 5000 geändert habe, Sie können das Protokoll 0 nicht verwenden.

GGRAPH /GRAPHSPEC SOURCE=INLINE. 
BEGIN GPL 
    COORD: rect(dim(1,2)) 
    DATA: p = iter(1,5000,1) 
    DATA: q = iter(5000,1000000,10) 
    TRANS: y =eval(100*exp((-p/1654.97)) 
    TRANS: w = eval((10**8.865)/(q**2.186)) 
    TRANS: r = eval(100*exp((-p/1415.97)) 
    TRANS: s = eval((10**7.065)/(q**2.216)) 
    TRANS: V2 = eval("V1=2") 
    TRANS: V4 = eval("V1=4") 
    SCALE: log(dim(1), base(10)) 
    SCALE: log(dim(2), base(10)) 
    GUIDE: axis(dim(3), opposite()) 
    ELEMENT: line(position(p*y), color.interior(color.red)) 
    ELEMENT: line(position(q*w), color.interior(color.pink)) 
    ELEMENT: line(position(p*r),color.interior(color.blue)) 
    ELEMENT: line(position(q*s), color.interior(color.lightblue)) 
END GPL. 

enter image description here

Sie können von dort trainieren plotten 3d, wenn Sie wirklich wollen, aber ich würde es nicht empfehlen.