Afficher l'image PNG de l'URL dans une carte WaferBonjour,
Je voudrais voir un wafermap à partir d'un fichier CSV ... ok

mais je remplacerais chaque carré par une image PNG à partir d'une URL définie dans le même fichier CSV...
Avez-vous des idées comment faire ???
Modélisation statistique avancéeÉtudes de consommation et de marchéAccès aux donnéesExploration et visualisation des donnéesRe : Afficher l'image PNG à partir de l'URL dans une carte WaferSalut John,
Merci beaucoup !! Superbe !!
Merci beaucoup Jthi, pour ton aide et ta solution pour JMP > v16
Solution pour JMP v15 ci-dessous
Joyeux noël
Xavier

Script JMP V15 :
// JMP V15
Names Default To Here(1);
dt = Open(
"$DOWNLOADS/pokemons/Wafermap_pokemon.csv",
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Comma, CSV(1)),
Strip Quotes(0),
Use Apostrophe as Quotation Mark(0),
Use Regional Settings(0),
Scan Whole File(1),
Treat empty columns as numeric(0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Labels(1),
Column Names Start(1),
Data Starts(2),
Lines To Read("All"),
Year Rule("20xx")
)
);
dt:XCoord << Data type(Numeric) << Set Modeling Type(Ordinal);
dt:YCoord << Data type(Numeric) << Set Modeling Type(Ordinal);
// reduce Filename to only filename OR use full filepath and modify Images column's formula
dt:Filename << Set Each Value(Word(-1, :Filename, "\"));
Show(Get Default Directory());
// This can be modified to get borders and so on if needfed
dt << New Column("Images", Expression, None, << Set Each Value(
Open(Get Default Directory() ||"images/" || :Filename, png);
));
:Images << Set Use For Marker;
gb = dt << Graph Builder(
Size( 522, 451 ),
Show Control Panel( 0 ),
Variables( X( :XCoord ), Y( :YCoord ) ),
Elements( Points( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size( 15 ), Marker Drawing Mode( "Normal" )}
)
)
);Re : Afficher l'image PNG à partir de l'URL dans une carte WaferSalut @BiX ,
L'exemple que j'ai montré était destiné à être utilisé avec l'exemple de jeu de données Big Class Families.jmp. 'height', 'weight' et 'picture' sont des colonnes de cet ensemble de données, mais ne figurent pas dans la table que vous créez dans votre script.
Pour utiliser 'Set Use For Marker' dans votre script, vous devez envoyer le message 'Set Use For Marker' à la colonne 'Images' que vous créez dans votre script avant la fonction Graph Builder.
Pour ce faire, remplacez tout ce qui commence par 'height = 20;' à la fin avec ce qui suit :
:Images << Set Use For Marker;
gb = dt << Graph Builder(
Size( 522, 451 ),
Show Control Panel( 0 ),
Variables( X( :XCoord ), Y( :YCoord ) ),
Elements( Points( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size( 15 ), Marker Drawing Mode( "Normal" )}
)
)
);
Notez que j'ai rajouté le code SendToReport pour définir la taille du marqueur sur 15 que vous aviez précédemment dans cet article.Si vous modifiez la taille du graphique, vous souhaiterez peut-être également modifier la taille du marqueur.
Veuillez nous faire savoir comment cela fonctionne pour vous.
Merci,
~Jean
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferMerci Jean,
J'essaie de mettre en place votre proposition à l'intérieur du script de Jthi sans succès...
Pouvez-vous me proposer votre mise à jour s'il vous plait ?
rgds
"
Noms par défaut ici(1);
dt = Ouvrir(
"$DOWNLOADS/pokemons/Wafermap_pokemon.csv",
Importer les configurations(
Fin de ligne (CRLF, CR, LF),
Fin de champ (virgule, CSV (1)),
Citations Strip(0),
Utilisez l'apostrophe comme guillemet (0),
Utiliser les paramètres régionaux (0),
Numériser tout le fichier(1),
Traiter les colonnes vides comme numériques (0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Étiquettes(1),
Noms de colonne Début(1),
Les données commencent(2),
Lignes à lire("Toutes"),
Règle de l'année ("20xx")
)
);
dt:XCoord << Type de données (numérique) << Définir le type de modélisation (ordinal) ;
dt:YCoord << Type de données (numérique) << Définir le type de modélisation (ordinal) ;
// réduit le nom de fichier au seul nom de fichier OU utilise le chemin de fichier complet et modifie la formule de la colonne Images
dt:Filename << Définir chaque valeur(Word(-1, :Filename, "\"));
Show(Obtenir le répertoire par défaut());
// Cela peut être modifié pour obtenir des bordures et ainsi de suite si nécessaire
dt << Nouvelle colonne("Images", Expression, Aucune, << Définir chaque valeur(
Ouvrir(Obtenir le répertoire par défaut() ||"images/" || :Nom de fichier, png);
));
hauteur = 20 ;
poids = 20 ;
gb = dt << Générateur de graphes(
Taille (522, 451),
Afficher le panneau de configuration(0),
Variables(X(:CoordX), Y(:CoordY)),
:Images < Bivarié( Y(:taille),X(:poids) );
Bivarié[]
);
"
Re : Afficher l'image PNG à partir de l'URL dans une carte Wafer@jthi a une bonne suggestion.Set Use for Marker a été implémenté dans JMP 14 conformément à l'index de script :

Lorsque vous utilisez une fonction pour la première fois, il est bon de la rechercher dans l'Index des scripts sous le menu Aide.
Vous pouvez également activer le journal intégré dans l'éditeur de script (Clic droit > Afficher le journal intégré) afin de pouvoir voir les erreurs lorsque vous exécutez votre script.

J'espère que cela t'aides,
~Jean
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferJe ne sais pas quand il a été implémenté (j'utilise JMP16). Vous pouvez essayer d'utiliser la colonne Images comme colonne Marqueur que j'ai suggérée dans mon premier message dans ce fil. J'espère que cela fonctionne (vous devrez supprimer cette partie du générateur de graphiques dans ce cas, je pense).
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferSalut Jti,
Merci encore.
Désolé, j'ai toujours pointé ou encerclé au lieu d'images pokemon.
Je soupçonne que la commande "Set Shape Column(:Images))" n'est pas fonctionnelle de mon côté ? (en V15.0.0 ou V15.2.1)

Re : Afficher l'image PNG à partir de l'URL dans une carte WaferLe générateur de graphiques peut être tracé à partir d'une mauvaise table de données. Basé sur les noms de fenêtre : le générateur de graphes utilise la table Wafermap_pokemon_2 et la table de données visible est Wafermap_pokemon_2 2 ). Peut-être que la table de données Wafermap_pokemon_2 n'a pas la colonne Image correctement définie ?
Re : Afficher l'image PNG à partir de l'URL dans une carte Wafersalut Jthi, merci pour votre aide.
Mais j'obtiens des cercles à la place des images pokemon.... un paramètre graphique à changer ?
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferLaissez la colonne Nom de fichier sur Caractère. Je suggérerais également d'utiliser les chemins complets des images car cela facilite le chargement des images (si vous ne pouvez pas le faire, il peut être plus simple d'utiliser Get Default Directory() ou Convert File Path() pour les créer pour la colonne de chargement d'image ). De plus, l'utilisation d'images comme marqueurs les rendra (très probablement) dépendantes de la taille du graphique et de la taille du marqueur utilisé. Si toutes les images ont la même taille et que vous n'avez pas besoin de générateur de graphiques, la création d'un affichage personnalisé peut également être une option.
Mes images, csv et images sont dans le dossier Downloads/pokemons

J'ai fait un nettoyage de chemin dans le script pour les chemins
Voir plus...
Names Default To Here(1);
dt = Open(
"$DOWNLOADS/pokemons\Wafermap_pokemon_2.csv",
Import Settings(
End Of Line(CRLF, CR, LF),
End Of Field(Comma, CSV(1)),
Strip Quotes(0),
Use Apostrophe as Quotation Mark(0),
Use Regional Settings(0),
Scan Whole File(1),
Treat empty columns as numeric(0),
CompressNumericColumns(0),
CompressCharacterColumns(0),
CompressAllowListCheck(0),
Labels(1),
Column Names Start(1),
Data Starts(2),
Lines To Read("All"),
Year Rule("20xx")
)
);
dt:XCoord << Data type(Numeric) << Set Modeling Type(Ordinal);
dt:YCoord << Data type(Numeric) << Set Modeling Type(Ordinal);
// reduce Filename to only filename OR use full filepath and modify Images column's formula
dt:Filename << Set Each Value(Word(-1, :Filename, "\"));
Show(Get Default Directory());
// This can be modified to get borders and so on if needfed
dt << New Column("Images", Expression, None, << Set Each Value(
Open(Get Default Directory() ||"images/" || :Filename, png);
));
gb = dt << Graph Builder(
Size(522, 451),
Show Control Panel(0),
Variables(X(:XCoord), Y(:YCoord)),
Elements(Points(X, Y, Legend(3), Set Shape Column(:Images))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size(15), Marker Drawing Mode("Normal")}
)
)
);
dt << New Column("ImagesWithBorder", Expression, None, << Set Each Value(
Local({bb, img},
bb = Border Box(Left(15, Empty()), Right(15, Empty()), Top(15), Bottom(15),
img = Picture Box(Open(Get Default Directory() ||"images/" || :Filename, png))
);
bb << Background Color("Orange");
img << Background Color("White");
bb << Get Picture;
);
));
gb = dt << Graph Builder(
Size(457, 714),
Show Control Panel(0),
Variables(X(:XCoord), Y(:YCoord)),
Elements(Points(X, Y, Legend(3), Set Shape Column(:ImagesWithBorder))),
SendToReport(Dispatch({}, "Graph Builder", FrameBox, {Marker Size(30), Marker Drawing Mode("Normal")}))
);
Tableau de données :

Sans bordures et taille de marqueur comme 15

Bordures et feutre taille 30 :

Si je modifie la taille du graphique, la taille du marqueur ne suivra pas :

Re : Afficher l'image PNG à partir de l'URL dans une carte WaferEssaye ça:
Après avoir importé le fichier csv avec les données X/Y et les chemins de fichier, utilisez le complément de
https://community.jmp.com/t5/Discovery-Summit-Americas-2020/Images-in-Data-Tables-and-related-JSL-Tools-2020-US-30MP-585/ta-p/281528
en cliquant sur

Dernière étape : générer le GraphBuilder Graph et charger les images via :

Re : Afficher l'image PNG à partir de l'URL dans une carte WaferSalut jti,
Lorsque j'exécute mon script, je n'obtiens pas la wafermap avec toutes les images Pokemon...
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferQu'est-ce qui vous pose problème ? Avez-vous réussi à obtenir les images correctement dans la table de données ?
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferDésole, je suis débutant et ne reussi pas, meme avec vos conseils, a realiser ce graph, avec les images et le fichier csv en entrée. je renouvèle ma demande d'aide.merci par avance

Re : Afficher l'image PNG à partir de l'URL dans une carte WaferTous, Merci de vos propositions. je vais essayer.
je vais déjà essayer de faire apparaitre les images dans une colonne de ma table car je ne suis pas sur du format de l'URL avec un chemin type windows (ex: //server.com/directory/image.png)
si vous avez des propositions de codes pour l'affichage d'image dans une base de données JMP ... je suis interesse.
Merci
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferPour utiliser les images comme formes pour les points de données, vous pouvez également spécifier la colonne via Définir la colonne de forme dans la commande GraphBuilder.
Ou plus tard, en cliquant avec le bouton droit dans la fenêtre GraphBuilder et en sélectionnant Définir la colonne de forme ... à partir de là.
Cela permet d'utiliser différentes colonnes pour différents tracés - et d'avoir des tracés avec des marqueurs standard.

Une excellente façon d'obtenir les images dans la table de données est expliquée ici :
https://community.jmp.com/t5/Discovery-Summit-Americas-2020/Images-in-Data-Tables-and-related-JSL-Tools-2020-US-30MP-585/ta-p/281528
Si les liens sont listés dans une colonne, il suffit d'un clic (Imagetable_Import_Images) et ils sont automatiquement chargés.
Open( "$SAMPLE_DATA/Big Class Families.jmp" );
New Column( "X", Numeric, "Continuous", Format( "Best", 12 ), Formula( Mod( Row() - 1, 7 ) ), Set Selected );
New Column( "Y", Numeric, "Continuous", Format( "Best", 12 ), Formula( Floor( (Row() - 1) / 7 ) ), Set Selected );
Graph Builder(
Size( 511, 500 ),
Show Control Panel( 0 ),
Variables( X( :X ), Y( :Y ) ),
Elements( Points( X, Y, Legend( 3 ), Set Shape Column( :picture ) ) ),
Dispatch( {}, "400", ScaleBox, {Legend Model( 3, Properties( 0, {Marker Size( 10 )}, Item ID( "Y", 1 ) ) )} )
)Re : Afficher l'image PNG à partir de l'URL dans une carte WaferAjouter du texte à une image pourrait vous donner des idées.
JMP propose trois façons de concevoir les images.
- placez les images dans des graphiques, en utilisant les axes X et Y pour positionner et mettre à l'échelle et l'ordre des images pour déterminer ce qui est en haut.
- utilisez les fonctions d'image pour charger, recadrer et dimensionner des objets d'image (qui peuvent être enregistrés au format PNG ou JPG une fois terminé.)
- déplacer les objets image dans des matrices et utiliser des opérations matricielles pour manipuler les pixels. Revenez aux objets image pour enregistrer une image.
Vous voudrez utiliser (1) si vous construisez déjà un graphique. Regardez la deuxième réponse, ici :
// you could use a loop to add a bunch of images to the framebox
// <<ADDIMAGE adds="" at="" the="" front="" of="" the="" display="" list.="" the="" first=""></ADDIMAGE>
Re : Afficher l'image PNG à partir de l'URL dans une carte WaferVous pouvez essayer d'utiliser des images comme marqueurs Utilisation de JMP > Rapports JMP > Utiliser des marqueurs dans les graphiques > Utiliser des images comme marqueurs après avoir les images dans la table de données. Et comment obtenir ces images dépend beaucoup du fonctionnement de vos URL. Vous pourrez peut-être utiliser la colonne Expression avec une formule telle que Open(url). Obtenir les bonnes tailles peut nécessiter quelques retouches.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
New Column("url",
Character,
"Nominal",
Set Values(
{
"https://www.jmp.com/en_us/download-jmp-free-trial/_jcr_content/par/contenttargetingcont/par_off/styledcontainer_cdbe/par/image_f589.img.png/1520449222936.png"
}
)
),
New Column("Column 2", Expression, "None", Formula(Open(:url)), Use for Marker)
);
gb = dt << Graph Builder(
Size(496, 466),
Show Control Panel(0),
Variables(X(:url)),
Elements(Points(X, Legend(2)))
);
Il peut également être judicieux d'empêcher le téléchargement des images si elles ont été téléchargées une fois