Wir generieren ein Skript zur Automatisierung der Erstellung von 2D-XY-Koordinatenspalten aus einer vom Benutzer ausgewählten 3D-Diagrammausrichtung.Das Skript ruft einen R-Code auf, um die Berechnungen durchzuführen, muss jedoch die XYZ-Spaltendaten und die Rotationseinstellungen für R bereitstellen.
In einem gespeicherten Scatterplot-3D-Skript können wir die XYZ-Spaltennamen (zue1 ...) und die Rotationseinstellungen (-8 ....) sehen.Wir benötigen JSL-Code, um diese Spalten auszuwählen und eine CSV-Datei zu exportieren.Und Code zum Auswählen und Exportieren der Werte der Rotationseinstellungen.
Jeder Rat wäre dankbar.
Streudiagramm 3D ((
Y (: zue1 ,: zue2 ,: zue3),
Frame3D ((
Haltegriffe einstellen ( 0 ),
Drehung einstellen (- 8.15592033195416 , 47.3040538060599 , 75.4291344975828 )
)
);
Anstatt CSV-Dateien als Vermittler zu verwenden, möchten Sie vielleicht einen Blick in die JMP- und R-Integration .
@ian_jmp Der Vorschlag, die R-Routinen von JMP aus aufzurufen, könnte eine gute Möglichkeit sein, das Problem zu lösen.
Wenn Sie wirklich eine CSV-Pass-Through-Datentabelle verwenden müssen, finden Sie hier ein einfaches Beispiel für eine Möglichkeit, die Erstellung einer CSV-Datei durchzuführen
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
sp << on close(
theScript = Char( (Report( sp ) << get scriptable object) << get script );
varsList = {};
Insert Into( varsList, Word( 2, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 4, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 6, Substr( theScript, Contains( theScript, "Y(" ) ), ":,)" ) );
rotationList = {};
Insert Into( rotationList, Word( 2, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 3, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 4, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
dtSub = dt << subset( columns( Eval( varsList ) ), selected rows( 0 ) );
dtSub << New Column( "_Vars_", character, set values( varsList ) );
dtSub << New Column( "_Rotation_", character, set values( rotationList ) );
dtSub << Save( "$TEMP/passvalues.csv" );
close( dtSub, nosave );
);
// This line opens the csv back into JMP
//open("$TEMP/passvalues.csv");