Hallo an alle,
Ich habe eine Frage zu JPG-Bildern, ich kann dazu keine Dokumentation auf JMP finden.
In meinem Fall habe ich einen Ordner mit etwa 3000 Bildern im „jpg“-Format.
Ich möchte diese Bilder im Graph Builder je nach Auswahl der lokalen Datenfilter im „jpg“-Format anzeigen können.
Zum Beispiel :

Hier sollte das folgende Bild angezeigt werden: obj „B“ und Typ „2“.
Dieses Bild heißt in meinem Ordner so: „B_2.jpg“.
Vielen Dank für Ihre Hilfe !
Ich denke, das kommt dem nahe, wonach Sie fragen, und sollte Ihnen den Einstieg erleichtern:
// https://community.jmp.com/t5/Discussions/Drawing-other-shapes-in-graph-builder/m-p/368186#M61806
NamesDefaultToHere(1);
// Open a table and do Bivariate
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Add a local data filter (:sex plays the role of floor . . . )
df = biv << Local Data Filter( Add Filter( columns( :sex ) ));
// Get the title of the window
win = (biv << Report) << GetWindowTitle;
// Define a function that will update the background image on the Bivariate plot
f = Function( {a},
// Infer what value of :sex is currenly selected in the data filter
levRows = df << getFilteredRows;
lev = Column(dt, "sex")[levRows];
lev = lev[1];
Speak(lev);
// (Try to) remove an image that might already be there
Try(
imgSeg = Window(win)[FrameBox(2)] << FindSeg( PictSeg( 1 ) );
imgSeg << Remove;
);
// Add the 'corresponding' image
if(
lev == "M",
Window(win)[FrameBox(2)] << Add Image(Open("$SAMPLE_IMAGES/tile.jpg"), FillGraph),
lev == "F",
Window(win)[FrameBox(2)] << Add Image(Open("$SAMPLE_IMAGES/progress.gif"), FillGraph)
);
);
// Add a handler to the data filter so that when the user makes a selection the function 'f' is called
rs = df << Make Filter Change Handler( f );Einen ähnlichen Ansatz verfolgen @ian_jmp Unten sehen Sie ein einfaches Beispiel für ein Skript, das ein Bild basierend auf einer Datenfilterauswahl anzeigt, jedoch keine JMP-Plattform wie Bivariate oder Graph Builder verwendet.Es wird lediglich ein Bild angezeigt.


Names Default To Here( 1 );
path = "c:\users\???\pictures"; // set the path to your image directory
// Filter out all non jpg files
files = Filter Each( {file}, Files In Directory( path ), Word( -1, file, "." ) == "jpg" );
// I create a dummy data table to use for an example
ob = {"A", "B", "C"};
dt = New Table( "Pictures", invisible,
add rows( N Items( files ) ),
New Column( "Obj", character, set each value( ob[Mod( Row(), 3 ) + 1] ) ),
New Column( "type", nominal, set each value( Col Cumulative Sum( 1, :obj ) ) ),
New Column( "ImagePath", character, set each value( files[Row()] ) )
);
:ImagePath << hide;
// Here is the working code that can be used against a data table that matches
// the example data table created above
// It uses a Make Row State Handler to handle the changing of images when
// the data filter values change
nw = New Window( "Example",
hlb = H List Box(
dt << Data Filter(
Location( {928, 247} ),
Mode( Include( 1 ) ),
Add Filter( columns( :Obj, :type ), Display( :type, N Items( 8 ) ) )
),
pb = Graph Box( Frame Size( 600, 600 ) )
)
);
pb( report )[axisbox( 2 )] << delete;
pb( report )[axisbox( 1 )] << delete;
theFunction = Function( {a},
If( N Rows( dt << get selected rows ) == 1,
Try( pb << delete );
hlb << append( pb = Picture Box( Open( path || "\" || dt:ImagePath[(dt << get selected rows)[1]], jpg ) ) );
pb << set height( 600 );
pb << set width( 600 );
,
Try( pb << delete );
hlb << append( pb = Graph Box( Frame Size( 600, 600 ) ) );
pb( report )[axisbox( 2 )] << delete;
pb( report )[axisbox( 1 )] << delete;
)
);
rs = dt << make row state handler( theFunction );