Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReportSalut,
Je veux pouvoir modifier l'axe Y du graphique uniquement lorsque l'axe Y est une certaine colonne (par exemple, les erreurs). Mais il semble que le graphbuilder ne reconnaisse pas le if qu'il contient. Cependant, cela fonctionne bien lorsque je n'utilise pas l'instruction if. Mais je veux pouvoir utiliser cette même fonction graphique pour toutes sortes de graphiques.
graph_func = function({stackdt,title},{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables(
X( :names ),
Y( as column(title) ),
Group X( :Type ),
Overlay( :GROUPs )
),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Type),
Display( :Type, Size( 160, 30 ), List Display )
) ),
if(contains(title,"error"),
SendToReport(
Dispatch(
{},
title,
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 10 ), Min( 0.00001 ), Max( 0.03 ),
Inc( 1 ), Minor Ticks( 1 )}
)
) , ) );
return(gb);
);Re : Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReport
Je ne peux pas vraiment fournir le JSL ou l'intégralité du graphique en raison de la politique de confidentialité de l'entreprise, mais voici à quoi ressemble l'axe X. Il y a 3 groupes sur l'axe Y du groupe et des erreurs sur l'axe Y. Je veux pouvoir voir tous les points intermédiaires sur l'axe y et pas seulement min et max comme c'est le cas.
De plus, lorsque je divise un groupe différent en fonction de la page, cela s'applique uniquement au 1er graphique et non au suivant.
Re : Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReportPourriez-vous s'il vous plaît fournir votre JSL et une image de la sortie d'affichage.
Re : Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReportMerci d'avoir répondu. J'ai essayé la 2ème solution car cela semblait simple avec ce que je fais. Cela fonctionne mais l'axe Y n'a plus que 2 points, c'est-à-dire min et max. Comment faire pour qu'il affiche l'échelle sur Yaxis ?Re : Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReportUn moyen plus simple de procéder consiste à transmettre des messages aux objets d'affichage créés par Graph Builder.Les messages peuvent être transmis après la production du graphique.Tous ces messages sont documentés dans l'index des scripts
Aide==>Index des scripts
puis recherchez l'objet AxisBox
Voici une modification de votre code qui devrait fonctionner
graph_func = Function( {stackdt, title},
{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables( X( :names ), Y( As Column( title ) ), Group X( :Type ), Overlay( :GROUPs ) ),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter( Add Filter( columns( :Type ), Display( :Type, Size( 160, 30 ), List Display ) ) )
);
If( Contains( title, "error" ),
report(gb)[AxisBox(2)] << min(0.00001) << Max( 0.03 ) << Inc( 1 ) <<MINOR ticks=""></MINOR>Re : Instruction If dans le générateur de graphiques pour la fonctionnalité SendToReportComme je l'ai mentionné dans d'autres discussions, Send To Report() est destiné à permettre à JMP de sauvegarder un script pour vous et de capturer toute personnalisation que vous auriez pu effectuer. Il existe de meilleures façons de personnaliser votre fenêtre lorsque vous écrivez un script. Par exemple,
gb = dt << Graph Builder( /* usual plot arguments */ );
If( error plot,
Report( gb )[AxisBox(1)] << Min( 0 ) << Max( 10 ) << Inc( 1 );
);
Je lancerais Graph Builder avec la personnalisation par défaut (pas pour tracer les erreurs). J'aurais un moyen de signaler l'exception (erreurs de traçage) et d'utiliser la fonction If() pour déterminer si les messages doivent être envoyés à l'objet. Dans l'exemple ci-dessus, l'argument du tracé d'erreur peut être un indicateur (variable booléenne) ou une expression qui renvoie vrai lorsque vous tracez les erreurs. Les messages sont envoyés vers l'axe vertical dans ce cas pour changer d'échelle. Vous pouvez utiliser cette illustration pour créer n’importe quelle personnalisation de votre choix.