Ajout d'images à une table de données à partir d'un répertoireMes amis, j'utilise JMP12 et j'aimerais ajouter une série d'images PNG à ma table de données.Je voudrais faire cela pour pouvoir les utiliser comme étiquettes sur un nuage de points d'indicateurs de correspondance moyenne statistique et invoquer le PNG (une image d'un graphique de limite de contrôle) en passant la souris sur la valeur de chaque indicateur.J'ai trouvé une vidéo SAS de Gail Massari important des photos d'oiseaux d'État à partir d'une URL Web Wikipédia ; différent de lui, mes images sont dans un dossier, sur un disque dur local.
J'ai essayé l'instruction:
{"",{ newimage(open( "drive:\file path\filename.png",png))}" comme entrée dans chaque ligne respective mais tout ce que j'obtiens en retour est une sortie "Vide()".
Je suis nouveau dans les scripts JSL et je suis à court d'idées.
Re : Ajout d'images à une table de données à partir d'un répertoireAvant l'ouverture, utilisez la fonction If (File Exits(), Open(); etc.; );
For( i = 1, i <= nr, i++,
If ( File Exists( :PNG_URL[i]|| ".png" ),
// do this only of the file is found
tp = Open( :PNG_URL[i], "png" );
Latest_Report:PNGs[i] = New Image( tp );
) // end if
);
Latest_Report:PNGs << label( 1 );
Re : Ajout d'images à une table de données à partir d'un répertoireS'appuyant sur ce sujet de l'utilisation d'images (c'est-à-dire *.png) comme étiquettes sur les graphiques tout en utilisant la boucle suivante :
Pour( je = 1, je <= nr, je++,
tp = Ouvrir( :PNG_URL[i], "png" );
Latest_Report:PNGs[i] = Nouvelle image ( tp )
);
Latest_Report:PNGs << étiquette (1);
J'ai appris que chaque fois que la commande OPEN ne parvient pas à trouver l'un des fichiers PNG, le script s'arrête et à partir de ce moment, toutes les autres lignes affichant les adresses des dossiers sont ignorées, JMP fournissant comme résultat "(Vide)" sur chaque cellule restante du tableau.Cela signifie que des informations précieuses ne sont pas affichées car une ligne déclenche un échec dans la boucle.
Quelle est la meilleure façon de contourner cela ?
La réexécution de la boucle ajoute uniquement une autre colonne (dans ce cas : PNG_URL 2) et fournit (comme prévu) le même résultat.
Re : Ajout d'images à une table de données à partir d'un répertoireEncore une fois, merci pour votre temps.
Interagir dans cette communauté a été une expérience d’apprentissage délicieuse.
Re : Ajout d'images à une table de données à partir d'un répertoireLes journaux sont des instantanés de votre affichage.Une option consiste à enregistrer au format .JRP avec des tables intégrées. Ensuite, lorsqu'un autre l'ouvre, la table et le rapport sous-jacents sont actifs.
Dans JMP 13 et 14 Enregistrer en tant que HTM interactif enregistre l'affichage et les étiquettes sont intégrées.
Re : Ajout d'images à une table de données à partir d'un répertoiregzmorgan, c'était génial et a fonctionné à merveille. Grand merci!!
Une dernière question,
Les journaux dans JMP.12 ne peuvent-ils pas afficher les étiquettes lorsque vous sélectionnez ou survolez des points de données dans des graphiques ?Re : Ajout d'images à une table de données à partir d'un répertoireLe chemin complet est-il dans une colonne séparée ou avez-vous une colonne pour le chemin et une colonne pour le nom du fichier ?
Supposons qu'il s'agisse d'une colonne nommée :Path. Puisqu'ils sont tous des fichiers png, alors
tp = Ouvrir( :Chemin[i], "png" );
Si vous avez deux colonnes :Dir et :Name, utilisez quelque chose comme ceci, s'il n'y a pas de barre oblique finale pour le nom du répertoire
tp = Ouvrir( :Dir[i] || "\" || :Name[i], "png" );
Les anciennes versions de JMP nécessitaient un eval()
tp = Open( eval( :Dir[i] || "\" || :Name[i] ) , "png" );
Essayez-le avant d'exécuter votre script, exécutez une seule ligne en remplaçant i par un nombre pour vous assurer que le chemin d'accès au fichier est correct.
Re : Ajout d'images à une table de données à partir d'un répertoireC'est exactement ce dont j'ai besoin et la solution est tout simplement élégante ; Je suis très reconnaissant de votre temps et de votre aide.
Maintenant le défi...
J'ai mes fichiers PNG dans 46 dossiers individuels et les fichiers PNG partagent le même nom ; par exemple j'ai " graphique30.png " répété 20 à 30 fois mais chaque fichier est enregistré dans un dossier différent car il s'agit d'une image d'un tableau de limites de contrôle différent.J'ai déjà le chemin\nom de fichier pour chacun sous forme de colonne discrète dans ma table de données.
Quelle serait la meilleure façon de rechercher pour chacun graphXX.png en fonction du chemin/nom de fichier spécifique déjà disponible dans une colonne contiguë ?
Re : Ajout d'images à une table de données à partir d'un répertoireRSantana, la vidéo de Gail montrait comment obtenir des photos à partir d'URL, et non des images intégrées.
Essayez le script qui démarre avec les noms par défaut ici (1). Il a été créé dans JMP 12.
Notez que si toutes vos images sont du même type, vous pouvez simplifier les lignes 11 et 12. Supposons que toutes vos images soient au format png, alors vous n'avez pas besoin de la ligne 11 : _typ = word() et de la ligne 12, vous pouvez supprimer les fonctions Eval( EvalExpr() ). J'en avais besoin pour cet exemple car les exemples d'images ont des types différents et dans JMP 12, l'open n'évaluerait pas la variable _ext ; il fallait que l'expression soit substituée puis évaluée.
Ce serait la ligne simplifiée 12 tp = Ouvrir("$Sample_images/"||_fid[i], "png" );
Copiez et collez ceci dans une fenêtre de script JMP, exécutez-le puis survolez les points. Un dernier commentaire consiste à intégrer le "code" de chaque image dans la colonne de votre tableau.
Names Default to Here(1);
_fid = Files in Directory("$sample_images");
nr = nitems(_fid);
//Create a table
dt = New Table("demo",add rows(nr),
New Column("X", <<SET values=""></SET>