Intégrer une image d’un tableau de données dans un graphique.
@Neo a demandé : Est-il possible d'obtenir une ligne et des colonnes d'un tableau ouvert en les insérant dans un graphique ?
fontscale = 2; // scale up as needed. make the font bigger to make the image bigger.
picScale = .42; // scale down to fit. less than one to prevent pixelation.
topFraction = 0.95; // 0 at bottom, 1 at top of frame
bottomFraction = 0.05; // 0 at left, 1 at right of frame
dt = Open( "$sample_data/big class.jmp" );
// take a picture of the data
box = dt << journal;
oldFont = Get Preferences( fonts );
Preferences( Fonts( English( Text Font( "Segoe UI", 9 * fontscale ), Heading Font( "Segoe UI", 12 * fontscale, "Bold" ), ) ) );
pic = box << getpicture;
{xPixPixels, yPicPixels} = pic << size;
box << closewindow;
Eval( oldFont );
// make the graph
gb = Graph Builder(
Show Control Panel( 0 ),
Size( 1158, 894 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
// add the image
{xFramePixels, yFramePixels} = (Report( gb )[FrameBox( 1 )]) << getsize;
xmin = (Report( gb )[axisBox( 1 )]) << getmin;
xmax = (Report( gb )[axisBox( 1 )]) << getmax;
xUnitsPerPixel = (xmax - xmin) / xFramePixels;
ymin = (Report( gb )[axisBox( 2 )]) << getmin;
ymax = (Report( gb )[axisBox( 2 )]) << getmax;
yUnitsPerPixel = (ymax - ymin) / yFramePixels;
topPos = ymin + (ymax - ymin) * topFraction;
leftPos = xmin + (xmax - xmin) * bottomFraction;
bottomPos = topPos - picScale * yPicPixels * yUnitsPerPixel;
rightPos = leftPos + picScale * xPixPixels * xUnitsPerPixel;
(Report( gb )[FrameBox( 1 )]) << Add Image( image( pic ), bounds( top( topPos ), Left( leftPos ), bottom( bottomPos ), Right( rightPos ) ) );
// clean up. this will capture a picture and close the report and data table
gb << savepicture( "$temp/example.png" );
gb << closewindow;
Close( dt, nosave );
Open( "$temp/example.png" );
A picture of a journaled data table embedded in a graph.Une image d’un tableau de données journalisé intégré dans un graphique.
Si vous faites un clic droit -> Personnaliser le graphique, vous pouvez voir que le comportement par défaut des images les place derrière le graphique.
The list items are drawn in order from top to bottom (painter's algorithm.) The picture is below the graph.Les éléments de la liste sont dessinés dans l'ordre de haut en bas (algorithme du peintre). L'image se trouve sous le graphique.
Vous pouvez déplacer l'image à dessiner après le graphique, mais cela ne sera généralement pas souhaitable.
The picture has a solid white background that blocks the graph.L'image a un fond blanc uni qui bloque le graphique.
Je sais que c'est un peu hors sujet, mais JMP a-t-il déjà envisagé d'ajouter des lisseurs monotones dans Graph Builder ? Ce serait une bonne option pour des situations comme celle-ci où nous avons une assez bonne idée que la relation doit être monotone.