Ich möchte Bilder zu meiner JMP-Tabelle hinzufügen, damit ich das zugehörige Bild sehen kann, wenn ich mit der Maus über einen Datenpunkt fahre. Ich mache mir Sorgen, dass meine Tabelle mehr als 300.000 Zeilen enthält, und ich denke, wenn ich jeder Zeile ein Bild hinzufüge, kann die Dateigröße unüberschaubar groß werden. Viele Zeilen teilen jedoch dasselbe Bild – es gibt nur etwa 30.000 Bilder, wobei jedes Bild von etwa zehn Zeilen gemeinsam genutzt wird. Gibt es eine effiziente Möglichkeit, ein Bild mehreren Zeilen zuzuordnen, ohne die Dateigröße zu erhöhen? (Oder wüsste JMP bereits, dass es das automatisch tun kann?)
Als Referenz ist hier der Code, den ich zuvor zum Hinzufügen von Bildern zu einer JMP-Tabelle verwendet habe, obwohl in diesem Fall jede Zeile ein eigenes Bild erhielt.
Names Default to Here(1);
// run the script on the currently-selected data table
dt = Current Data Table();
// point to the directory where your thumbnail images are stored
// this script assumes the image names follow the pattern "0001.jpg", "0002.jpg", etc.
BaseImageDirectory = "C:\Users\user\Downloads\thumbnails\";
// create a column called "pics" to put the images
CurrentColumnNames = dt << get column names(string);
if (!contains(CurrentColumnNames, "pics"), New Column("pics", Expression));
// iterate through each row in the data table to add the images
For Each Row(
// look for a column called "image_directory" and take the name of the lowest-level subdirectory
Directory = word(-1, :image_directory, "\");
// zero-pad the image number to four digits (e.g. image_number 1 becomes 0001)
ImageID = Repeat( "0", 4 - Length( Char( :image_number ) ) ) || Char( :image_number );
// look for a file name like 0001.jpg in a folder with a name matching "image_directory"
ThumbnailFile = BaseImageDirectory || Directory || "\" || ImageID || ".jpg";
Eval(Eval Expr(tp = ThumbnailFile));
// insert the image into the column "pics"
Try(dt:pics = new image(tp));
);
// set "pics" as a label so it shows up when you hover over any data point
dt:pics << label(1);Ich würde eine einzelne Kopie jedes einzelnen Bildes in einer Datentabelle ablegen und dann eine virtuelle Tabelle erstellen, indem ich Ihre große Datentabelle mit der Bildtabelle verknüpfe, um so die Duplizierung zu vermeiden.
Eine andere Möglichkeit könnte darin bestehen, Hover-Labels zu verwenden und die Bilder nur bei Bedarf zu laden. In diesem Fall könnten Sie die Pfade in der Datentabelle speichern und diese dann mithilfe des Hover-Labels basierend auf diesen Pfaden laden.