Je souhaite ajouter des images à ma table JMP. Ainsi, lorsque je survole un point de données, je peux voir l'image associée. Mon souci est que ma table a plus de 300 000 lignes, et je pense que si j'ajoute une image à chaque ligne, la taille du fichier peut devenir ingérable. Cependant, de nombreuses lignes partageront la même image - il n'y a que ~ 30 000 images, chaque image étant partagée par ~ 10 lignes. Existe-t-il un moyen efficace d'associer une image à plusieurs lignes sans augmenter la taille du fichier ? (Ou JMP saurait-il déjà le faire automatiquement ?)
Pour référence, voici le code que j'ai précédemment utilisé pour ajouter des images à une table JMP, bien que dans ce cas, chaque ligne recevait une image distincte.
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);Je mettrais une seule copie de chaque image unique dans une table de données, puis je créerais une table virtuelle en reliant votre grande table de données à la table d'images, évitant ainsi la duplication.
Une autre option pourrait être d'utiliser Hover Labels et de charger les images uniquement lorsque cela est nécessaire. Dans ce cas, vous pouvez stocker les chemins d'accès à la table de données, puis utiliser l'étiquette de survol pour charger ceux basés sur ces chemins.