Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesSalut tout le monde,
J'ai plusieurs graphiques dans le générateur de graphiques à partir de plusieurs tables de données. 2 choses à noter :
- Ils ont tous été créés avec JSL.
- La plupart d'entre eux ont été ajoutés à une fenêtre JMP, à l'exception du dernier.
Pour une raison quelconque, je ne peux mettre en évidence que les données sur le dernier tracé du générateur de graphique (et sélectionné les lignes correspondantes dans sa table).
Pourquoi est-ce et y a-t-il un moyen de le réparer?
Merci.
Personnalisation de masseRe : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesCela peut facilement arriver. Changez votre référence JSL en
gb = dt << générateur de graphes(.........)Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesSalut @txnelson .
C'est exactement ce que je fais.
Ça a marché. Je l'ai ajouté directement la deuxième fois que j'ai créé les tracés au lieu de l'ajouter dans une fonction séparée. Je pense que le problème pourrait provenir du fait que tous les objets du générateur de graphiques provenaient de diverses tables de données et utilisaient des variables dans celles-ci, donc lors de la réexécution de l'expression, JMP ne savait pas quelles tables utiliser pour chaque générateur de graphiques et les variables n'étaient pas ' t défini.
Merci pour l'aide!
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesVotre GBList contient des pointeurs vers la sortie d'une sortie déjà exécutée.Ce qui doit être ajouté, c'est le Graph Builder (..........) JSL, donc il est exécuté dans l'objet Display.
Si je lis correctement votre squelette de code, ce que je pense que vous faites, c'est de collecter des informations à partir des différents générateurs de graphiques, puis d'utiliser ces informations pour ordonner la sortie.Si tel est le cas et que vous souhaitez que la sortie soit dynamique plutôt que statique, vous devrez peut-être exécuter les graphiques une seconde fois dans la fenêtre d'affichage de sortie.Je l'ai fait plusieurs fois dans le passé.J'adopte aussi parfois une approche légèrement différente.Si vous utilisez le R2 pour effectuer la commande, alors ce que je suggère, c'est que vous utilisiez la plate-forme de filtrage des réponses pour obtenir les valeurs R2 souhaitées, et à partir de ce résultat, générez les sorties souhaitées en fonction de cette commande.
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesJ'ai essayé d'ajouter l'objet graph builder lui-même, mais cela donne cette erreur :
Not a display in access or evaluation of 'Append' , Append( ReorderedPlotBoxList[i] ) /*###*/
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesLe problème est que vous ajoutez le rapport pour le générateur de graphiques, pas l'objet du générateur de graphiques.Jetez un œil aux résultats du script ci-dessous et vous verrez que le rapport ajouté devient un graphique statique, où l'objet intégré ne
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
mygb = Expr(
gb = Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Overlay( :sex ) ),
Elements( Line( X, Y, Legend( 7 ) ) )
);
);
mygb;
nw = new window("Report",);
nw << append(report(gb));
nw << append(mygb);
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesSalut @txnelson et @Thierry_S .
Merci pour la réponse. Pour une raison quelconque, ma réponse précédente a été marquée comme un abus, voici donc une réécriture :
Malheureusement, je ne peux pas partager l'intégralité du script ou des intrigues à cause de NDA mais je peux essayer de fournir plus de détails :
Je crée les fenêtres en utilisant cette fonction:
CreateResultsWindow = Function(
// Inputs
{Title},
// Local variables
{
Window, ReturnList,
OutLineBox1, BorderBox1, LineUpBox1
},
Window = NewWindow(Title,
OutLineBox1 = OutLineBox(
Title,
BorderBox1 = BorderBox(
Left(40), Right(40), Top(40), Bottom(40), Sides(30),
LineUpBox1 = LineUpBox(NCol(2));
);
);
);
ReturnList = {};
InsertInto(ReturnList, LineUpBox1);
EvalList ( ReturnList );
);
Je crée ensuite des objets Graph Builder dans une boucle for et les ajoute à une liste :
GB = GraphBuilder(...);
InsertInto(GBList, GB);
Et puis je les attache à un objet d'affichage dans la fenêtre (la Lineup Box) en appelant cette fonction :
AppendPlotBasedOnDescendingValue = Function(
// Inputs
{PlotBoxList, ValueList, AppendBox},
// Local variables
{i, RankList, ReorderedPlotBoxList},
// Vector of indices used as subscript into original list
RankList = RankIndex(ValueList);
// Reorder plots based on values
ReorderedPlotBoxList = PlotBoxList[RankList];
// Plot by descending
For(i=NItems(ReorderedPlotBoxList), i>=1, i--,
AppendBox << Append(Report(ReorderedPlotBoxList[i]));
ReorderedPlotBoxList[i] << CLoseWindow;
);
);J'appelle la fonction avec la liste du générateur de graphes et une liste de valeurs R^2.
AppendPlotBasedOnDescendingValue(GBList, R2List, LineupBox);
Cela fonctionne, mais je ne parviens pas à sélectionner/mettre en surbrillance les données sur le générateur de tableaux/graphiques.
Merci.
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesMerci @txnelson et @Thierry_S pour la réponse.
Malheureusement, je ne peux pas partager l'intégralité du script ou des intrigues pour des raisons NDA, mais je peux fournir plus de détails si possible.
Voici à quoi ressemble la fenêtre :
CreateResultsWindow = Function(
// Inputs
{Title},
// Local variables
{
Window, ReturnList,
OutLineBox1, BorderBox1, LineUpBox1
},
Window = NewWindow(Title,
OutLineBox1 = OutLineBox(
"Outline Box 1",
BorderBox1 = BorderBox(
Left(40), Right(40), Top(40), Bottom(40), Sides(30),
LineUpBox1 = LineUpBox(NCol(2));
);
);
);
ReturnList = {};
InsertInto(ReturnList, OutLineBox1);
InsertInto(ReturnList, LineUpBox1);
EvalList ( ReturnList );
);
J'appelle cette fonction plusieurs fois pour plusieurs types de tracés et j'ajoute à la Lineup Box comme ceci :
Créez plusieurs objets GB et insérez-les dans une liste GB
GB = DT << GraphBuilder(...);
InsertInto(GBList, GB);
Ajoutez-les en fonction d'une certaine valeur (R ^ 2 dans mon cas):
AppendPlotBasedOnDescendingValue(GBList, R2List, LineUpBox1);
AppendPlotBasedOnDescendingValue = Function(
// Inputs
{PlotBoxList, ValueList, AppendBox},
// Local variables
{i, RankList, ReorderedPlotBoxList},
// Vector of indices used as subscript into original list
RankList = RankIndex(ValueList);
// Reorder plots based on values
ReorderedPlotBoxList = PlotBoxList[RankList];
// Plot by descending
For(i=NItems(ReorderedPlotBoxList), i>=1, i--,
AppendBox << Append(Report(ReorderedPlotBoxList[i]));
ReorderedPlotBoxList[i] << CLoseWindow;
);
);
Il est ajouté correctement, mais je ne suis tout simplement pas en mesure de sélectionner/mettre en surbrillance les tableaux/tracés de données.
Alors à ta question
@Thierry_S Je pense que j'utilise un élément graphique (Lineup Box)
Merci.
Re : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesSalut,
Comme @txnelson mentionné, il est presque impossible de diagnostiquer votre problème avec les informations que vous avez fournies. La seule chose à laquelle je peux penser à ce stade est un problème possible avec la façon dont vous ajoutez le graphique à la nouvelle fenêtre : utilisez-vous une capture d'élément graphique ou ajoutez-vous le graphique entier à votre nouvelle fenêtre ? Le premier éliminera la connexion à la table.
Meilleur,
TSRe : Impossible de mettre en surbrillance sur le générateur de graphiques et de sélectionner les lignes correspondantesVous n'avez pas fourni assez d'informations pour vraiment permettre un vrai diagnostic. Une copie du script et une image de la sortie seraient vraiment utiles