Nous générons un script pour automatiser la production de colonnes de coordonnées XY 2D à partir d'une orientation de graphique 3D sélectionnée par l'utilisateur. Le script appellera un code R pour effectuer les calculs, mais doit fournir les données de la colonne XYZ et les paramètres de rotation à R.
À partir d'un script 3D de diagramme de dispersion enregistré, nous pouvons voir les noms des colonnes XYZ (zue1...) et les paramètres de rotation (-8....). Nous avons besoin d'un code jsl pour sélectionner ces colonnes et exporter un fichier csv. Et d'un code pour sélectionner et exporter les valeurs des paramètres de rotation.
Tout conseil serait apprécié.
Scatterplot 3D(
Y( :zue1, :zue2, :zue3 ),
Frame3D(
Set Grab Handles( 0 ),
Set Rotation( -8.15592033195416, 47.3040538060599, 75.4291344975828 )
)
);
Plutôt que d'utiliser des fichiers CSV comme intermédiaires, vous voudrez peut-être examiner la Intégration JMP et R .
@ian_jmp la suggestion d'appeler les routines R de JMP pourrait vraiment être un excellent moyen de résoudre le problème.
Si vous avez vraiment besoin d'utiliser une table de données de passage csv, voici un exemple simple d'une façon d'accomplir la création d'un fichier csv
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");