Lorsqu'une colonne avec des images est définie en tant qu'étiquette, survolez un point de données dans un graphique pour afficher le resp. image. Est-il possible de faire cela pour plusieurs images (dans différentes colonnes)? La définition de plusieurs colonnes comme libellé ne fonctionne pas, seule l'image de la première colonne est affichée.
Bien que ce ne soit pas une solution complète et qu’il faille un peu de travail pour répondre à vos besoins, Julia Gong a réalisé un script permettant de combiner des images pouvant être utilisées. https://community.jmp.com/t5/JMP-Scripts/Banner-fying-Images/ta-p/23899
//open desired images to "blend" in order; here they are "image1" and "image2"
image1 = open("C:\Users\YOUR_NAME\Documents\YOUR_IMAGE.jpg", jpg);
image2 = open("C:\Users\YOUR_NAME\Documents\YOUR_OTHER_IMAGE.jpg", jpg);
//banner = open("C:\Users\jugong\Documents\Images\Banner.jpg", jpg); //template with correct W:H ratio
//retrieve dimensions of each picture
//{banCols, banRows} = banner << getSize();
banCols = 1400; banRows = 425; //correct dimensions; use other template if 1400x425 not desired
{image2Cols, image2Rows} = image2 << getSize();
{image1Cols, image1Rows} = image1 << getSize();
//determine the necessary H and W of resulting image (as big as possible)
image2ColsScaled = Floor(image2Cols / (banCols * 0.55)) * banCols;
image1ColsScaled = Floor(image1Cols / (banCols * 0.55)) * banCols;
image2RowsScaled = Floor(image2Rows / banRows) * banRows;
image1RowsScaled = Floor(image1Rows / banRows) * banRows;
width = min(image2ColsScaled, image1ColsScaled);
height = Round((banRows / banCols) * width);
//crop images (truncate, not resize)
image2A = newImage(image2);
image2A << crop(left(1), right(Round(width * 0.55)), top(0), bottom(height));
image1A = newImage(image1);
image1A << crop(left(1), right(Round(width * 0.55)), top(0), bottom(height));
{image2Cols, image2Rows} = image2A << getSize();
//new window(" ", image2A);
//retrieve r, g, b, matrices for original images
{r, g, b} = image2A << getPixels("rgb");
{r2, g2, b2} = image1A << getPixels("rgb");
//create matrices for new banner image
matR = J(height, width, 0);
matG = J(height, width, 0);
matB = J(height, width, 0);
matA = J(height, width, 1);
//position the two images in the new banner
//first image placed
for(i = 1, i <= height, i++,
for(j = 1, j <= image2Cols, j++,
matR[i, j] = r2[i, j];
matG[i, j] = g2[i, j];
matB[i, j] = b2[i, j];
);
);
//second image placed
for(i = 1, i <= height, i++,
for(j = image2Cols, j >= 1, j--,
matR[i, (j + (width - image2Cols))] = r[i, j];
matG[i, (j + (width - image2Cols))] = g[i, j];
matB[i, (j + (width - image2Cols))] = b[i, j];
);
);
//left side blending
for(i = 1, i <= height, i++,
for(j = 1, j <= width / 2, j++,
matA[i, j] = 1 - (j / width) * 2.2;
);
);
//right side blending
missed = 0;
for(i = 1, i <= height, i++,
index = 1;
for(j = width, j >= width / 2, j--,
matA[i, j] = 1 - (index / width) * 2.2;
index++;
if(matA[i, j] > 0.904, missed++;);
);
);
missed /= height;
//blending the middle
for(i = 1, i <= height, i++,
for(j = width / 2 - missed, j <= width / 2 + missed, j++,
matA[i, j] = 0.003;
);
);
//create new image and save to directory (if desired)
img = newImage("rgba", {matR, matG, matB, matA});
new window("LinkedIn Banner", img);
//img << saveImage("C:\Users\YOUR_NAME\Documents\YOUR_BANNER_NAME.png", png); //make sure to use png!
J'ajouterai que je pense que vous devriez ajouter cette suggestion à la liste de souhaits JMP pour l'ajouter à une version ultérieure
Vous pouvez toujours essayer d'ajouter les images ensemble dans une seule colonne. Cela prendrait probablement du travail, mais cela pourrait certainement être écrit dans un script. Je ne suis pas un expert en manipulation d'images dans des scripts, mais je suis certain que c'est faisable.