fond de carteBonjour à tous,
Je dispose d’un dossier comportant plusieurs images. J’arrive en faisant glisser une par une les images à mettre l’image correspondante en fond de carte (dans l’outil constructeur de graphique). J’aimerais pouvoir réaliser ceci de façon interactive avec un outil JMP (script JSL, sélecteur de colonne...).
C’est à dire modifier le fond de carte en fonction du choix de l’utilisateur et avec les images du dossier évoqué.
Voici par exemple à quoi ressemble une image en fond de carte en faisant glisser l’image à la main :

Merci pour votre aide !
Data Exploration and VisualizationRe: fond de carteUtiliser Ajouter une image à framebox devrait fonctionner
Names Default To Here(1);
folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
swap_img = Expr(
frame = Report(gb)[FrameBox(1)];
Try(
cur_img = frame << FindSeg(PictSeg(1));
cur_img << Remove;
);
img = New Image(folder_of_interest || cur_file);
frame << Add Image(
Image(img),
bounds(top(90), Left(10), bottom(10), Right(90))
);
);
nw = new window("",
H List Box(
rb = Radio Box(filenames, << Set Function(function({this},
cur_file = (this << get selected);
swap_img;
))),
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
)
);Re: fond de carteMerci pour votre réponse @jthi.
D’une part j’obtiens bien toutes les différentes images à gauche de la page où je peux choisir laquelle sélectionner.
Lorsque je sélectionne une image, j’obtiens le message d’erreur suivant :

Re: fond de carteLe script fonctionne pour moi lorsque j'utilise JMP17

Re: fond de carteMerci, cela fonctionne correctement, j'avais oublié la suite du chemin d'accès.
Cependant, pour que l'image soit bien représentée avec les bonnes dimensions je dois utiliser l'option "Image"-->"Taille/Echelle"-->"Remplir le graphique".
Existe-t-il une option permettant de le faire automatiquement ou faut-il le faire de façon manuelle à chaque fois ?
Merci pour votre réponse !
Re: fond de carteL'index de script est généralement assez efficace pour trouver des solutions (vous pouvez utiliser le même mot-clé que celui du menu JMP ou des parties de celui-ci)

Re: fond de carteJ'utilise ce script pour avoir le constructeur des graphiques, j'ai essayé d'intégrer l'option "fill graph" mais rien de concluant cela ne fonctionne pas correctement.
Names Default To Here(1);
folder_of_interest = Convert File Path("image");
filenames = Files In Directory(folder_of_interest);
dt = current data table();
swap_img = Expr(
frame = Report(gb)[FrameBox(1)];
Try(
cur_img = frame << FindSeg(PictSeg(1));
cur_img << remove;
wait ( 1 );
cur_img << fill graph;
);
img = New Image(folder_of_interest || cur_file);
frame << Add Image(
Image(img),
bounds(frame << fill graph);
);
);
nw = new window("Image référence vs défauts",
H List Box(
rb = Radio Box(filenames, << Set Function(function({this},
cur_file = (this << get selected);
swap_img;
))),
gb = dt << Graph Builder(
Size( 567, 494 ),
Show Control Panel( 0 ),
Variables( X( :COORDXD ), Y( :COORDYD ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
Local Data Filter(
Add Filter(
columns( :NUMP, :NUMIMAGE ),
Where( :NUMP == "x" ),
Where( :NUMIMAGE == x ),
Display( :NUMP, N Items( 15 ), Find( Set Text( "" ) ) ),
Display( :NUMIMAGE, N Items( 15 ) )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
6,
Properties( 0, {Line Color( 51 )}, Item ID( "COORDYD", 1 ) )
)}
)
)
);
)
);
Re: fond de carteVous avez besoin de la référence à PictSeg une fois l'image définie, puis utilisez le graphique de remplissage à ce sujet.
Re: fond de carteBonjour,
Dans la liste des images à sélectionner à gauche, j'obtiens beaucoup de choix.
Est-il possible de changer le format d'affichage et d'avoir une liste déroulante où nous pouvons chercher les images que nous souhaitons afficher en fond ?
Comme ci-dessous :

merci pour vos réponses.
Re: fond de carteCela dépend de votre interface utilisateur. Vous pourrez peut-être utiliser un filtre de données local ou écrire votre propre champ de recherche (à l'aide de la zone d'édition de texte) qui peut ensuite être utilisé par exemple avec la zone de liste pour afficher les éléments.
Re: fond de carteMerci pour votre réponse.
J'ai essayé avec List Box mais je ne sais pas où l'intégrer dans le script
Names Default To Here(1);
Clear Log();
folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
swap_img = Expr(
frame = Report(gb)[FrameBox(1)];
Try(
cur_img = frame << FindSeg(PictSeg(1));
cur_img << Remove;
);
img = New Image(folder_of_interest || cur_file);
frame << Add Image(
Image(img),
bounds(top(90), Left(10), bottom(10), Right(90))
);
);
nw = new window("",
H List Box(
rb = Radio Box(filenames, << Set Function(function({this},
cur_file = (this << get selected);
swap_img;
))),
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
)
);
Re: fond de carteVous remplaceriez Radio Box par List Box. Si vous avez besoin d'une fonction de recherche, vous devrez l'écrire vous-même car ListBox ne l'a pas par défaut
Voir plus...
Names Default To Here(1);
Clear Log();
folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
swap_img = Expr(
frame = Report(gb)[FrameBox(1)];
Try(
cur_img = frame << FindSeg(PictSeg(1));
cur_img << Remove;
);
img = New Image(folder_of_interest || cur_file);
frame << Add Image(
Image(img)
);
seg = frame << FindSeg(PictSeg(1));
seg << fill graph;
seg << Lock(1);
);
nw = new window("",
H List Box(
rb = List Box(filenames, << Set Max Selected(1), << Set Function(function({this},
cur_file = (this << get selected)[1];
swap_img;
))),
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
)
);
Re: fond de carteBonjour à tous,
A l'aide de ce script, j'obtiens dans le constructeur de graphique des images interactives en fond.
J'aimerais pouvoir bloquer les images et rendre la taille isométrique pour chacune des images.
J'utilise par défaut les fonctions "lock(1)" et "size to isometric" mais cela fonctionne uniquement lorsque je travaille sur 1 seule photo, je n'arrive pas à généraliser les fonctions pour toutes les images, dès que l'on modifie la sélection de la photo en fond du constructeur de graphique les fonctions n'ont plus d'effets.
Comment peut-on résoudre ce problème ?
Merci pour vos réponses.
Re: fond de carteJe ne sais pas exactement quel problème vous rencontrez. Quel type d'images essayez-vous de définir ? Comment doivent-ils être alignés dans votre graphique ? Doivent-ils remplir tout le graphique ? Ont-ils des limites spécifiques ?
Voir plus...
Names Default To Here(1);
Clear Log();
folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
swap_img = Expr(
Try(
cur_img = frame << FindSeg(PictSeg(1));
cur_img << Remove;
);
img = New Image(folder_of_interest || cur_file);
frame << Add Image(
Image(img)
);
seg = frame << FindSeg(PictSeg(1));
seg << fill graph;
// seg << bounds(Left(0), Right(100), top(100), bottom(0));
// {l, r, t, b} = seg << getBounds;
seg << Lock(1);
);
nw = new window("",
H List Box(
rb = List Box(filenames, << Set Max Selected(1), << Set Function(function({this},
cur_file = (this << get selected)[1];
swap_img;
))),
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
)
);
frame = Report(gb)[FrameBox(1)];
frame << Size to Isometric(1);