Sélectionnez le problèmeJe crée un graphique, et lorsque j'en sélectionne une partie, il met en évidence toute la feuille Excel. Je me souviens de la démo que vous devriez pouvoir sélectionner un segment et le faire mettre en évidence uniquement les données directement liées à ce segment. Qu'est-ce que je fais de mal ici ?
J'aimerais également savoir s'il existe un moyen pour que JMP trouve les données de pointe de plusieurs points sur la même ligne et les affiche dans le graphique ?
Merci pour votre temps
Re : Sélectionner un problèmeEn essayant une tactique légèrement différente, je me suis débarrassé de la partie du script qui ajuste la taille et l'apparence des points et j'ai simplement modifié ces paramètres dans mes préférences pour l'instant. J'ai réalisé que le script que j'avais auparavant ne mettait pas réellement le pointe vers les graphiques supplémentaires (plus que le premier), j'ai donc proposé celui-ci. Cependant, il fait une chose plutôt bizarre en traçant tout seul un deuxième graphique de la première ligne en douceur...
dt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
elements_txt = elements_txt ||
"Legend( 7 ) ),
Points( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
elements_txt = elements_txt ||
"Legend(8))
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[14]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[15]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);
J'ai enregistré le script pour cela, puis le script pour savoir à quoi je veux qu'il ressemble (juste le graphique du haut), mais je ne suis pas sûr des parties que je dois modifier pour me débarrasser du graphique erroné...
//This is what it graphs
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Name( "Time[sec]" ) ),
Y( :Name( "CH2-Chemical Cal" ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH2-Chemical Cal" ) )
),
Elements(
Position( 1, 1 ),
Line( X, Y( 1 ), Y( 2 ), Legend( 7 ) ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) )
),
Elements(
Position( 1, 2 ),
Points( X, Y, Legend( 11 ) ),
Smoother( X, Y, Legend( 12 ) )
),
SendToReport(
Dispatch(
{},
"CH2-Chemical Cal",
ScaleBox( 2 ),
{Min( -125.45871559633 ), Max( 1724.54128440367 ), Inc( 100 ),
Minor Ticks( 1 )}
)
)
);
// This is what I want it to graph
Graph Builder(
Show Control Panel( 0 ),
Variables(
X( :Name( "Time[sec]" ) ),
Y( :Name( "CH2-Chemical Cal" ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) ),
Y( :Name( "CH4-Chemical Cal" ), Position( 1 ) )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Legend( 7 ) ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) )
)
);Re : Sélectionner un problèmeC'est vrai, je ne cherche pas vraiment quelqu'un pour y consacrer beaucoup de travail, si cela arrive, je devrais appeler cela une commission, en espérant juste que quelqu'un puisse avoir des suggestions sur ce que je peux essayer ou peut-être indiquer. moi dans la bonne direction, je suis dans le grand bain avec quelques flotteurs et ils perdent de l'air XD
Re : Sélectionner un problèmeJe suis désolé, mais je n'ai pas le temps de consacrer du temps au débogage, puis à l'implémentation d'un nouveau code dans un morceau de code qui devient aussi volumineux que votre script. Je vous souhaite bonne chance pour trouver quelqu'un dans la communauté pour vous aider.Re : Sélectionner un problèmeÇa a l'air génial, alors c'est là que réside le problème, je ne sais pas comment faire ça XD. Le script est beaucoup plus avancé que moi, j'essaie juste de lui donner une forme pour faire ce dont j'ai besoin, il fonctionne tel quel (je veux dire, je peux le faire fonctionner, il ne fait pas ce dont j'ai besoin) mais J'aimerais un peu d'ajustement et de polissage, pour ainsi dire. Je fouille dans la littérature du mieux que je peux et j'essaie de comprendre, mais je ne connais vraiment pas encore le jargon. Donc actuellement, le nombre de canaux est sélectionné par la boîte contextuelle (en indice), sachant qu'il existe un moyen d'indiquer à la légende combien de lignes j'ai sélectionnées afin de modifier uniquement ce nombre de lignes ? Vraisemblablement, c'est ce que fait la fonction variable dans le reste du script car elle n'a aucun problème avec plusieurs lignes/canaux, etc... La seule raison pour laquelle j'essaie d'ajouter cette partie est qu'avec le graphique linéaire, vous ne pouvez pas sélectionner un segment pour tracer les données en corrélation. Je dois être capable de trouver le sommet d'une ligne. J'aimerais également que JMP mette également ces données dans le graphique, mais je suppose que cela va être encore plus difficile que cela, puisque je demande au script de sélectionner non seulement différents points spécifiques dans les données, mais aussi il peut y en avoir plusieurs sur une ligne et j'en ai besoin d'un spécifique, pas seulement du premier ou du plus élevé. Dans l'état actuel des choses, je peux simplement utiliser une seule ligne pour les données les plus importantes et les faire une par une, ce qui constitue un grand progrès. Je pourrais même aller jusqu'à enregistrer plusieurs scripts et en avoir simplement un pour chaque nombre de lignes dont j'ai besoin. pour tracer, mais je suis sûr qu'il existe un meilleur moyen, je ne sais tout simplement pas comment y arriver... pour le moment ^.^
Re : Sélectionner un problèmeen gros, votre JSL crée simplement un nouveau JSL. Et en ce qui concerne la section SendToReport, vous avez câblé le code pour exiger 3 offset_cols. Vous le savez déjà, mais ce que je veux dire, c'est que vous générez du code JSL que vous exécutez finalement. Donc, ce que vous devez faire, c'est décomposer le code, afin de vérifier combien d'éléments se trouvent dans la liste offset_cols, puis sur cette base, générer uniquement le code JSL pour ce nombre d'éléments.Re : Sélectionner un problèmedt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
// add in the marker and transparency code
elements_txt = elements_txt ||
"Legend( 7 ) ), Points( X, Y, Legend(8))),
SendToReport(
Dispatch(
{},
\!"400\!",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( \!""
|| offset_cols[1] || "\!", 1 ), Item ID( \!""
|| offset_cols[2] || "\!", 1 ), Item ID( \!""
|| offset_cols[3] || "\!", 1 ) )
)}
)
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[5]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[6]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[7]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
if (cb9 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch9_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);Donc celui-ci me permet de faire tourner 3 chaînes différentes, malheureusement, je ne peux pas faire tourner -moins- de 3 chaînes. Je peux exécuter plus que cela, mais les canaux supplémentaires n'auront pas le chemin des points inclus, je ne peux donc pas sélectionner des points séparés sur la ligne comme prévu. Si j'utilise moins de 3 canaux, je me retrouve avec cette alerte

Re : Sélectionner un problèmeoups, j'ai trouvé un problème, puisque vous l'avez changé d'une variable en statique, cela ne fonctionne que sur le premier tracé, et je devrai peut-être tracer plusieurs graphiques simultanément (c'est pourquoi la variable) J'ai essayé de dupliquer pour chaque colonne possible, ceci fonctionne, mais seulement si j'utilise le nombre d'intrigues que j'inclus, et je peux en utiliser moins ou plus selon les circonstances. Je n'arrive pas à faire fonctionner la variable pour cet ajustement, peut-être y a-t-il un argument if then que nous pourrions fournir pour les lignes supplémentaires afin que si je ne les trace pas, elles ne discuteront pas avec le script ?
Re : Sélectionner un problèmehuzzah ! ça marche, il y a une erreur si je sélectionne un canal en dehors de la plage que je recherche, mais c'est parfaitement bien car je ne ferai pas ça pour autant que je sache.
Merci beaucoup!
Re : Sélectionner un problèmeJ'ai un peu retravaillé ton code.
1. J'ai ajouté le code pour modifier la taille et la transparence du marqueur
2. Vous n'avez peut-être pas remarqué le problème suivant, cependant, dans les nouvelles colonnes que vous créiez, les formules contenaient les valeurs dt et i.Ce sont des variables de mémoire qui peuvent éventuellement changer.(c'est-à-dire que vous enregistrez la table, démarrez une session JMP dans le futur, ouvrez la table de données et les colonnes provoqueraient une erreur, car les variables dt et i ne sont plus disponibles).J'ai donc modifié le code pour que les formules aient des valeurs câblées.
Voici le code.J'ai créé une table de données de maquette pour tester le code, donc il y a peut-être encore un ou deux problèmes.
dt = Open();
col_list = dt << get column names( string );
Remove From( col_list, 1 ); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = Expr(
For( i = 1, i <= N Items( cols_to_plot ), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
// If used before, delete the column and then recreate it
If( Try( Column( dt, new_name ) << get name, "" ) != "",
dt << delete columns( new_name )
);
Insert Into( offset_cols, new_name );
// The variable i and the column name need to be changed to their
// static value for the column formulas to be correct
Eval(
Substitute(
Expr(
dt << New Column( new_name,
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( __cols_to_plot__ * __offset_list__ )
)
),
Expr( __cols_to_plot__ ), Parse( ":" || cols_to_plot[i] ),
Expr( __offset_list__ ), offset_list[i]
)
);
);
// Now for the graph - build a text string and then execute it
gb_text = "\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
For( i = 1, i <= N Items( cols_to_plot ), i++,
If( i == 1,
// then
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\" )
,
// else
gb_text = gb_text || Eval Insert( "\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\" )
);
elements_txt = elements_txt || Eval Insert( "Y ( ^i^ ), " );
);
// add in the marker and transparency code
elements_txt = elements_txt ||
"Legend( 7 ) ), Points( X, Y, Legend(8))),
SendToReport(
Dispatch(
{},
\!"400\!",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( \!""
|| offset_cols[1] || "\!", 1 ) )
)}
)
)";
gb_text = gb_text || elements_txt || "); ";
Eval( Parse( gb_text ) );
);
nw = New Window( "Graph Chemicals",
Panel Box( "Select channels to graph",
Lineup Box( N Col( 2 ),
Text Box( "Column" ),
Text Box( "Chemical Cal" ),
cb1 = Check Box( "Ch1" ),
ch1_neb = Number Edit Box(),
cb2 = Check Box( "Ch2" ),
ch2_neb = Number Edit Box(),
cb3 = Check Box( "Ch3" ),
ch3_neb = Number Edit Box(),
cb4 = Check Box( "Ch4" ),
ch4_neb = Number Edit Box(),
cb5 = Check Box( "Ch5" ),
ch5_neb = Number Edit Box(),
cb6 = Check Box( "Ch6" ),
ch6_neb = Number Edit Box(),
cb7 = Check Box( "Ch7" ),
ch7_neb = Number Edit Box(),
cb8 = Check Box( "Ch8" ),
ch8_neb = Number Edit Box(),
cb9 = Check Box( "Ch9" ),
ch9_neb = Number Edit Box(),
),
),
Panel Box( "Actions",
H List Box(
okb = Button Box( "OK",
If( cb1 << get( 1 ),
Insert Into( cols_to_plot, col_list[8] );
offset_value = ch1_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb2 << get( 1 ),
Insert Into( cols_to_plot, col_list[9] );
offset_value = ch2_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb3 << get( 1 ),
Insert Into( cols_to_plot, col_list[10] );
offset_value = ch3_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb4 << get( 1 ),
Insert Into( cols_to_plot, col_list[11] );
offset_value = ch4_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb5 << get( 1 ),
Insert Into( cols_to_plot, col_list[12] );
offset_value = ch5_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb6 << get( 1 ),
Insert Into( cols_to_plot, col_list[13] );
offset_value = ch6_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb7 << get( 1 ),
Insert Into( cols_to_plot, col_list[14] );
offset_value = ch7_neb << get;
Insert Into( offset_list, offset_value );
);
If( cb8 << get( 1 ),
Insert Into( cols_to_plot, col_list[15] );
offset_value = ch8_neb << get;
Insert Into( offset_list, offset_value );
);
graph_expr;
nw << close window;
),
canb = Button Box( "Cancel", nw << close window ),
)
),
);
// Pre-check checkboxes if column exists
For( i = 1, i <= N Items( col_list ), i++,
If(
col_list[i] == "Ch1", cb1 << set( 1, 1 ),
col_list[i] == "Ch2", cb2 << set( 1, 1 ),
col_list[i] == "Ch3", cb3 << set( 1, 1 ),
col_list[i] == "Ch4", cb4 << set( 1, 1 ),
col_list[i] == "Ch5", cb5 << set( 1, 1 ),
col_list[i] == "Ch6", cb6 << set( 1, 1 ),
col_list[i] == "Ch7", cb7 << set( 1, 1 ),
col_list[i] == "Ch8", cb8 << set( 1, 1 ),
col_list[i] == "Ch9", cb9 << set( 1, 1 ),
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 8, Properties( 0, {Marker Size( 0 )}, Item ID( "CH2-Offset", 1 ) ) )}
)
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 ), Transparency( 0 )}, Item ID( "^offset_cols[i]^", 1 ) )
)}
)
)
);Re : Sélectionner un problèmeTout le texte se trouve dans le post précédent sous la fenêtre de spoiler, il n'a tout simplement pas l'air correct donc j'ai utilisé des images, je ne savais pas à quoi servait le bouton JSL donc j'ai juste copié/collé.
dt = Open ();
col_list = dt << get column names(string);
remove from(col_list, 1); // Remove time[sec] from list
cols_to_plot = {};
offset_list = {};
offset_cols = {};
// Define the graph builder commands in an expression for use by the OK button
graph_expr = expr(
for (i = 1, i <= nitems(cols_to_plot), i++,
new_name = cols_to_plot[i] || "-Chemical Cal";
insertinto(offset_cols, new_name);
dt << new column(new_name, Numeric, "Continuous", Format( "Best", 12 ),
Formula( as column(dt, cols_to_plot[i]) * offset_list[i] ) );
);
// Now for the graph - build a text string and then execute it
gb_text =
"\[gb = graph builder(
show control panel(0),
variables(
X( :Name( "Time[sec]" ) ),]\";
elements_txt = " ),
Elements( Line( X, ";
for (i = 1, i <= nitems(cols_to_plot), i++,
if (i == 1,
// then
gb_text = gb_text || evalinsert("\!N\[ Y( :Name( "^offset_cols[i]^" ) ), ]\");
,
// else
gb_text = gb_text || evalinsert("\!N\[ Y( :Name( "^offset_cols[i]^" ), Position( 1 ) ),]\");
);
elements_txt = elements_txt || evalinsert("Y ( ^i^ ), ");
);
elements_txt = elements_txt || "Legend( 7 ) ), Points( X, Y, Legend(8))
,";
gb_text = gb_text || elements_txt || ") )";
eval(parse(gb_text));
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{Marker Size( 0 ), Transparency( 0 )},
Item ID( "^offset_cols[i]^", 1 )
)
)}
)
)
);
nw = new window("Graph Chemicals",
panel box("Select channels to graph",
lineup box(ncol(2),
text box("Column"), text box("Chemical Cal"),
cb1 = checkbox("Ch1"), ch1_neb = number edit box(),
cb2 = checkbox("Ch2"), ch2_neb = number edit box(),
cb3 = checkbox("Ch3"), ch3_neb = number edit box(),
cb4 = checkbox("Ch4"), ch4_neb = number edit box(),
cb5 = checkbox("Ch5"), ch5_neb = number edit box(),
cb6 = checkbox("Ch6"), ch6_neb = number edit box(),
cb7 = checkbox("Ch7"), ch7_neb = number edit box(),
cb8 = checkbox("Ch8"), ch8_neb = number edit box(),
cb9 = checkbox("Ch9"), ch9_neb = number edit box(),
),
),
panelbox("Actions",
hlistbox(
okb = button box("OK",
if (cb1 << get(1),
insertinto(cols_to_plot, col_list[8]);
offset_value = ch1_neb << get;
insertinto(offset_list, offset_value);
);
if (cb2 << get(1),
insertinto(cols_to_plot, col_list[9]);
offset_value = ch2_neb << get;
insertinto(offset_list, offset_value);
);
if (cb3 << get(1),
insertinto(cols_to_plot, col_list[10]);
offset_value = ch3_neb << get;
insertinto(offset_list, offset_value);
);
if (cb4 << get(1),
insertinto(cols_to_plot, col_list[11]);
offset_value = ch4_neb << get;
insertinto(offset_list, offset_value);
);
if (cb5 << get(1),
insertinto(cols_to_plot, col_list[12]);
offset_value = ch5_neb << get;
insertinto(offset_list, offset_value);
);
if (cb6 << get(1),
insertinto(cols_to_plot, col_list[13]);
offset_value = ch6_neb << get;
insertinto(offset_list, offset_value);
);
if (cb7 << get(1),
insertinto(cols_to_plot, col_list[14]);
offset_value = ch7_neb << get;
insertinto(offset_list, offset_value);
);
if (cb8 << get(1),
insertinto(cols_to_plot, col_list[15]);
offset_value = ch8_neb << get;
insertinto(offset_list, offset_value);
);
graph_expr;
nw << close window;
),
canb = button box("Cancel", nw << close window;
),
)
),
);
// Pre-check checkboxes if column exists
for (i = 1, i <= nitems(col_list), i++,
if (col_list[i] == "Ch1", cb1 << set(1, 1),
col_list[i] == "Ch2", cb2 << set(1, 1),
col_list[i] == "Ch3", cb3 << set(1, 1),
col_list[i] == "Ch4", cb4 << set(1, 1),
col_list[i] == "Ch5", cb5 << set(1, 1),
col_list[i] == "Ch6", cb6 << set(1, 1),
col_list[i] == "Ch7", cb7 << set(1, 1),
col_list[i] == "Ch8", cb8 << set(1, 1),
col_list[i] == "Ch9", cb9 << set(1, 1),
);
);Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties( 0, {Marker Size( 0 )}, Item ID( "CH2-Offset", 1 ) )
)}
)
)
);
Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "Time[sec]" ) ), Y( :Name( "CH2-Offset" ) ) ),
Elements( Line( X, Y, Legend( 7 ) ), Points( X, Y, Legend( 8 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
8,
Properties(
0,
{Marker Size( 0 ), Transparency( 0 )},
Item ID( "^offset_cols[i]^", 1 )
)
)}
)
)
);Re : Sélectionner un problèmeVotre absence de réponse à votre dernière question est en partie due à la façon dont vous affichez le code.Passer le code sous la forme d'une image oblige la communauté à saisir manuellement tout votre code si elle veut essayer de déboguer votre code.Pourriez-vous s'il vous plaît entrer le code en utilisant soit l'icône "Insérer le code" ou, mieux encore, l'icône "Insérer un script JSL".Si votre navigateur ne prend en charge aucun d’eux, coller le code dans la réponse fonctionnera.
Re : Sélectionner un problème
Je pense que ça devrait être à la fin ici, mais je continue à avoir

Je ne sais pas quoi essayer d'autre, j'ai essayé plusieurs noms logiques différents mais aucun changement.
Re : Sélectionner un problèmeMagnifique, maintenant on arrive à quelque chose, j'ai du mal à insérer le dialogue qui vient pour ça dans mon script. Lorsque je fais cet ajustement, le script ressemble à ceci

mais j'ai du mal à comprendre où et comment insérer les modificateurs dans mon script de base.

J'aimerais mieux comprendre cela, mais la compréhension est moins importante que l'effet, pour le moment ^.^ (enregistré sous forme d'images au lieu de texte car le texte fonctionnait étrangement, code texte à suivre)
Voir plus...
Re : Sélectionner un problèmeSi vous faites un clic droit sur les points dans la légende du graphique, vous pouvez modifier la taille des points et la couleur des points.Re : Sélectionner un problèmeAddenda:
D'accord, j'ai donc modifié mon graphique pour qu'il utilise également des points. Cependant, les points sont énormes et gâchent mon image. Existe-t-il un moyen de représenter graphiquement les points plus petits ou même de les représenter graphiquement mais de supprimer les points visibles ? Je n'ai pas besoin de points, j'ai juste besoin de pouvoir sélectionner le segment spécifique d'une ligne qui ne vous permet pas de le faire. Merci pour votre aide supplémentaire !

Re : Sélectionner un problèmeEh bien, cela répond à la question, mais présente un nouveau problème. D'un autre côté, je connais maintenant un moyen très rapide de trouver la valeur maximale sans trop d'effort, mais j'aimerais vraiment pouvoir sélectionner simplement le segment de la ligne. Le graphique linéaire est le meilleur moyen de représenter les données dans ce cas, car il s'agit d'un écoulement fluide, nous collectons des points de données sur une période donnée, mais le fluide continue de circuler entre ces points, et aussi parce qu'il reflète la façon dont il est affiché dans d'autres formats. il est facile de voir si vous consultez les bonnes données ou si les données sont nettement en dehors des paramètres souhaités. Je me demande s'il existe un moyen de l'afficher sous forme de ligne, mais de le traiter comme des points... *réfléchit* Eh bien, de toute façon, merci pour l'information !
Re : Sélectionner un problèmeSalut tout le monde,
La sélection d'une ligne sélectionnera tous les points qui composent cette ligne. Vous devrez avoir des points sur la ligne pour sélectionner uniquement cette région de la ligne.
J'espère que cela pourra aider.
Chris
Re : Sélectionner un problèmeC'est intéressant, la même chose m'arrive.Je remarque également que l'outil lasso se transforme en rectangle plutôt qu'en polygone à dessin libre.Mais cela ne se produit que si l'option de ligne dans Graph Builder est choisie plutôt que les points.Je suppose qu'avec la ligne tracée pour la moyenne de cette variable, tous les points sont mis en évidence car tous les points sont utilisés pour calculer la moyenne - mais c'est une supposition et je serai intéressé de voir si quelqu'un peut percer le mystère.Quant à votre autre question, pouvez-vous utiliser une combinaison de fonctions ColMax et/ou ColRank pour obtenir les points que vous recherchez ?
Re : Sélectionner un problème
C'est un graphique assez simple avec seulement deux lignes de données, il devrait être très simple mais pour une raison quelconque, comme vous pouvez le voir, la sélection uniquement du pic met en évidence la feuille de calcul entière.
La deuxième partie, je cherche davantage un moyen de l'écrire dans le script que j'ai actuellement, si je dois rechercher les points de données et les sélectionner, le point est déjà vaincu, les variables que je connais sont la colonne dans laquelle il apparaît, cela il y aura toujours un 0 avant chaque pic de référence, et que je ne me soucie que du point le plus élevé du pic pour chaque occurrence sur la ligne.
Je vais bien sûr jeter un œil au livre, mais le temps n'attend personne et le but de ce projet est de rationaliser les tâches que nous effectuons déjà, nous n'avons pas besoin de JMP pour rechercher les valeurs que nous avons déjà dans Excel, vous savez. ^.^
Re : Sélectionner un problèmeVous trouverez ci-dessous un graphique dans lequel certains points ont été sélectionnés et, comme on peut le voir sur le graphique et le tableau de données, quels points ont été sélectionnés.Cependant, vous devrez fournir plus d'informations sur le graphique que vous utilisiez exactement et sur ce que contient le tableau de données pour pouvoir tenter de déterminer quels peuvent être les problèmes.Je vous suggère dans un premier temps de lire le livre Essential Graphing fourni avec l'installation de JMP.
Aide==>Livres==>Graphisme essentiel

Concernant votre deuxième question, oui, vous pouvez déterminer les points sélectionnés à partir d'une ligne et afficher leurs valeurs sur le graphique.Cela peut être fait en spécifiant quelles colonnes doivent être utilisées pour l'étiquette, puis en sélectionnant les points de données à afficher.Encore une fois, cela est couvert dans le livre Essential Graphing