Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Salut tout le monde,
J'ai atteint les limites de mes compétences en script (plutôt limitées) et je cherche de l'aide.
Ce que j'essaie actuellement de faire est de créer une légende basée sur "Couleur par colonne" ou légende de ligne, qui n'est pas ajoutée à un certain tracé mais pourrait être placée dans une boîte de contour séparée ou autre.
La raison pour laquelle j'essaie de le faire est que je travaille sur un script JSL qui, à la fin, récupère tout un tas de données d'une base de données et donne une multitude de visualisations pour différentes étapes de processus avec des légendes pour la plupart différentes. En plus, je veux le distribuer sous forme de fichier html interactif. Comme il y aura beaucoup de graphiques et donc beaucoup de défilement, j'aimerais générer un alignement Outline Box / Scroll Box, où la légende et peut-être certaines informations écrites devraient rester visibles (dans une partie séparée de la fenêtre) lors du défilement des graphiques.
Ce que j'ai réussi à faire jusqu'à présent, c'est de copier la boîte de bordure d'une légende générée dans le presse-papiers via (On fait référence à un tracé générique à sens unique avec une "légende de ligne" installée)
rOne = One << report;
Link = rone[Owner Box(1)] << parent;
show (Link);
Link << copy picture
qui copie la légende Border Box dans le presse-papiers. Je peux le coller dans un mot par exemple et obtenir exactement ce que je cherchais. Malheureusement, je ne trouve pas de commande JSL pour coller des graphiques du presse-papiers dans une visualisation. Je l'ai essayé via "Obtenir le presse-papiers" dans un environnement de boîte d'image, mais cette commande ne semble fonctionner que pour le texte.
Est-ce que quelqu'un sait s'il est possible de coller des graphiques à partir du presse-papiers ?
Alternativement, quelqu'un a-t-il un extrait de code qui permet de créer une légende autonome (j'ai essayé de le convertir à partir des états de ligne mais je n'ai pas été très loin avec cela) ?
Toute aide est grandement appréciée.
salue
Malte
Personnalisation de masseRe : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Salut John,
Je le ferai, mais seulement après avoir essayé de m'assurer qu'il y a bien un sujet sur la boîte de défilement dans l'environnement html interactif et pas plutôt dans mon code (c'était mon premier essai d'utilisation des boîtes de défilement, il y a peut-être place à l'amélioration
)
salue
MalteRe : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Malte,
Veuillez envoyer plus de détails sur les problèmes de HTML interactif.
Si vous n'êtes pas à l'aise de partager avec la communauté, veuillez m'envoyer un message privé ou signaler les problèmes au support technique.
Merci,
~Jean
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Merci pour votre contribution @SP .
J'aime beaucoup l'idée de créer la légende directement à partir du tableau de données. Cela pourrait être très pratique, bien qu'à la fin du script, il y aura tout un tas de fenêtres de légende flottant autour...Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Merci beaucoup pour cette solution simple et rapide @Melanie_J_Drake , même si j'ai opté pour la solution plus ambitieuse de danschikore
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Merci beaucoup, @danschikore . Votre solution est excellente. J'ai dû tordre un peu votre code pour l'adapter à mon schéma de visualisation, mais cela fonctionne très bien.
J'ai toujours des problèmes avec les affichages de la boîte de défilement, mais cela semble plutôt être des bogues dans la visualisation html interactive (disparition des données par exemple; dans un cas particulier intéressant, les tracés ne sont pas apparus dans l'environnement JMP, mais sont apparus (bien que quelque peu déformés) lorsqu'ils sont enregistrés en tant que html interactif).
Votre travail est énormément apprécié
salue
Malte
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Super toutes ces réponses !
Je voulais juste ajouter à la suggestion de gzmorgan0 concernant de nombreux fichiers HTML interactifs. Une façon de créer une interface utilisateur HTML pour référencer plusieurs fichiers HTML interactifs consiste à utiliser Fichier > Publier dans le menu principal de JMP. Il créera une interface utilisateur HTML avec des vignettes pour vos rapports HTML interactifs. Il peut être automatisé dans JSL à l'aide de New Web Report. Voici un extrait du Scripting Index :
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp", Invisible );
webreport =
New Web Report(
Add Report(
Distribution(
Continuous Distribution(
Column( :weight )
),
Nominal Distribution( Column( :age ) )
),
Title( "Distribution Web Report" ),
Description(
"This report was created with the sample found in the Scripting Index"
)
)
);
file = webreport << Save( "$TEMP" );
If( !Is Empty( file ),
Web( file )
);
L'exemple ajoute un seul rapport, mais vous pouvez en ajouter autant que vous le souhaitez. Il enregistre également dans un emplacement temporaire, mais vous pouvez le définir sur un lecteur réseau partagé, puis envoyer l'emplacement à vos collègues.
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?@danschikore , c'était vraiment cool.
Il s'agit d'une autre option, pour utiliser une boîte contextuelle de filtre de données. Je pense que c'est un peu plus facile à écrire et permet plusieurs filtres pour le HTML interactif. Il n'a pas la légende JMP, mais le filtre de données est puissant.Un exemple est fourni ci-dessous.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Current Data Table() << Data Filter( Local, Add Filter( columns( :sex ) ) ),
ScrollBox(
Platform(
Current Data Table(),
biv = Bivariate(
X( :height ),
Y( :weight ),
By( :age ),
)
)
)
)
)
);
_xxx = biv<< Xpath("//FrameBox");
_xxx << {MarkerSize(6)};
_xxx << RowLegend("sex", color(1), Marker(1)); //this will just be a reminder
nw << Save Interactive HTML("C:/temp/SharedLocalFilter.html");
@MJE si vous avez vraiment beaucoup de rapports, au lieu d'un défilement, vous pouvez envisager de créer votre propre interface HTML vers des pages/fichiers HTML interactifs créés par JMP.Il existe de nombreux exemples d'interfaces utilisateur de recherche HTML sur Internet.
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Il y a quelques endroits où JMP utilise le contenu du presse-papiers - généralement associé à un moyen de copier dans le presse-papiers comme axis< et axis< .
Pour votre cas d'utilisation, je recommanderais de copier ou de déplacer les cases plutôt que de créer une image.Pour copier à partir d'une légende de ligne, vous pouvez faire quelque chose comme ceci :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
framebox = rbiv[Frame Box( 1 )];
framebox << Row Legend( "age", color( 1 ), Marker( 1 ) );
subset = dt<<GET rows="" where=""> 58 & :weight < 95);
w = New Window("Custom Report",
H List Box(
Graph Box(FrameSize(300,300),MarkerSeg(:weight[subset], :height[subset],Row States(dt, subset))),
(biv<<REPORT></REPORT></GET>
La légende sera toujours convertie en image lorsqu'elle sera exportée au format HTML, mais cela conservera tout sous forme de boîtes d'affichage JMP dans JMP.Cependant, vous noterez que la légende clonée n'est pas cliquable comme la légende d'origine.En utilisant Retirer() et Insérer dans() , vous pouvez réorganiser les boîtes sans avoir à les cloner.Cela crée un rapport défilant similaire à ce que vous suggérez :
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ), by( :age ) );
rbiv = biv[1] << report;
framebox = rbiv[Frame Box( 1 )];
framebox << Row Legend( "sex", color( 1 ), Marker( 1 ) );<BR />
// extract legend and report
legend = rbiv[OwnerBox(1)];
legendparent = legend<<PARENT></PARENT>// rearrange into a scrolled layout
toprpt << Append(hlist = HListBox(scrollbox=VScrollBox(800)));
InsertInto(scrollbox, fullrpt, 1);
InsertInto(hlist, legendbox, 2);
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Il est possible de coller depuis le presse-papiers en utilisant le menu principal ("Coller") mais ce n'est pas très utile (difficile de contrôler le timing et la cible avec jsl).
Je ne sais pas ce que vous voulez, mais je suis sûr qu'il existe de meilleures alternatives que de passer par le presse-papiers ici.
Voici un exemple qui peut être utile :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/big class.jmp");
ow = Report(dt << Oneway(Y(:Height), X(:Age)));
rl = dt << Color By Column(:Age, Make Window With Legend);
nw = New Window("row legend",
H List Box(Scroll Box(Size(400, 600), V List Box(ow, ow, ow, ow)), rl)
);
// nw << Save Interactive HTML("path/example.html");
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Je ne sais pas exactement ce que vous essayez de faire, mais Get Picture pourrait être ce dont vous avez besoin. Il vous donne un objet image que vous pouvez ensuite placer dans une arborescence d'affichage JMP. Voici un exemple tiré de l'index de script :
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
New Window( "Example", rbiv << Get Picture );
C'est ce que vous cherchez ? Ce sera juste une image statique, pas interactive.
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?Je souhaite ajouter un deuxième mode à l'AddInhttps://marketplace.jmp.com/appdetails/Image+to+Tablepar@Jed_Campbell .
Le module complémentaire charge l'image depuis le disque dur. Dans certains cas, il peut être utile de coller l'image depuis le presse-papiers.
Existe-t-il une commande JSL pour coller des graphiques à partir du presse-papiers ?
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?
Existe-t-il une commande JSL pour coller des graphiques à partir du presse-papiers ?
Je ne pense pas qu'il existe actuellement un moyen de faire cela avec JSL. Peut-être serait-ce un bon candidat pour la liste de souhaits JMP ?
Re : Comment coller des graphiques à partir du presse-papiers via JSL ; alternativement : comment créer une légende autonome ?ok, voilà : coller les graphiques depuis le presse-papiers