Superposer un graphique sur un autre graphiqueGens,
Quels sont les moyens (ou le meilleur moyen) de superposer un autre graphique sur un autre, comme indiqué dans la première pièce jointe ? L'objectif final est de générer plusieurs tracés, de les organiser dans une fenêtre qui est enregistrée en tant que propriété de table. Cette propriété de table est ensuite exécutée afin que l'image composite finale puisse être copiée et collée dans Powerpoint.
Le script que j'ai jusqu'à présent m'y amène presque (voir le script ci-joint et la 2e pièce jointe). Mon script actuel va évidemment dans le rapport pour chaque graphique généré et une commande "Get Picture" est utilisée pour remplir la boîte de programmation. J'ai essayé de traiter l'histogramme uniquement comme une image et de faire un "Ajouter une image", mais je n'ai pas réussi à le faire fonctionner.
Si une commande Ajouter une image est la voie à suivre, ma question supplémentaire est de savoir comment trouver de manière appropriée les arguments « limites » pour se positionner correctement ?
Daniel
cr = Current Data Table() << Run Script("Cumulative Resistivity");
rpt_cr = Report(cr);
rpt_cr_pic = rpt_cr[PictureBox(1)] << Get Picture;
ds = Current Data Table() << Run Script("Distribution");
rpt_ds = Report(ds);
rpt_ds_pic = rpt_ds[ListBox(4)] << Get Picture;
//comb = New Image( rpt_ds_pic );
//rpt_cr_pic << Add Image( comb, bounds(left(0), top(500),bottom(0),right(724)));
nw = Eval Expr( New Window("BR",
a = V List Box(
Lineup Box(N Col(2), rpt_cr_pic, rpt_ds_pic ),
)
)
);
Current Data Table() << New Script("RP", nw) ;


GraphiqueScriptRe: Superposer un graphique sur un autre graphiqueJuste pour plus de clarté, j'essaie de superposer une image d'un graphique (via get picture) sur une autre image graphique.
Donc, selon le script, j'obtiens l'image "rpt_ds_pic" et j'essaie de la superposer sur rpt_cr_pic. Cependant, je ne reçois que le rpt_cr_pic pour ma sortie, la photo ajoutée ne s'affiche pas.
J'ai parcouru l'index de script (Ajouter une image) et le guide de script, mais je ne saisis évidemment pas un concept fondamental qui fait que cela fonctionne.
Tout indice ou direction serait extrêmement utile.
Merci beaucoup.
Daniel
cr = Current Data Table() << Run Script("Cumulative Resistivity");
rpt_cr = Report(cr);
rpt_cr_pic = rpt_cr[PictureBox(1)] << Get Picture;
ds = Current Data Table() << Run Script("Distribution");
rpt_ds = Report(ds);
rpt_ds_pic = rpt_ds[PictureBox(1)] << Get Picture;
comb = New Image( rpt_ds_pic );
rpt_cr_pic << Add Image( comb, bounds(left(0), top(500),bottom(0),right(724)));
nw = Eval Expr( New Window("BR",
a = V List Box(
Lineup Box(N Col(2), rpt_cr_pic, /*rpt_ds_pic*/ ),
)
)
);
Current Data Table() << New Script("RP", nw) ;
Re: Superposer un graphique sur un autre graphiqueSalut,
La seule façon que je connaisse de le faire est la suivante:
1) Obtenez vos images et obtenez les matrices de pixels pour elles.
2) Écraser une sous-matrice des pixels de l'image "inférieure" avec la matrice de pixels de l'image "supérieure".
Vous trouverez ci-dessous un script illustrant cela et une image (en fait une fenêtre de 3 images où l'image "du haut" a été "collée" à différents endroits) montrant les résultats. Vous devrez peut-être expérimenter pour obtenir votre image là où vous le souhaitez, mais cette approche devrait éventuellement faire l'affaire.
names default to here(1);
//make a table
dt = astable(J(50,2,randomuniform()));
//make a graph
gb = dt << Graph Builder(
Size( 500, 500 ),
Show Control Panel( 0 ),
Variables( X( :col1 ), Y( :col2 ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
);
//save to a picture, get the pixels and get the picture's x and y dimemnsions
pic1 = (report(gb)[framebox(1)] << get picture) << get pixels;
pic1y = nrow(pic1);
pic1x = ncol(pic1);
//now make another graph and do the same
dist = dt << distribution(histograms only, y(:col1));
pic2 = (report(dist)[framebox(1)] << get picture) << get pixels;
pic2y = nrow(pic2);
pic2x = ncol(pic2);
//create a window to place the resulting images
nw = new window("xx",
vlb = vlistbox(
)
);
x = y = 1; //initial "corner" of overwritten pixels... we will increment these and do 3 total pictures
for(i = 1, i<=3, i++,
newPic = pic1;
newPic[ y::(y+pic2y-1), x::(x+pic2x-1), ] = pic2;
vlb << append(picturebox(new image(newPic)));
y += 60;
x+= 150;
);

Acclamations,
Brady
Re: Superposer un graphique sur un autre graphiqueBrady,
Je viens de recevoir quelque chose qui semblait fonctionner plus tôt dans la journée, mais je veux également m'attaquer à votre approche.
Sur la base de la commande "Ajouter une image" (et de l'exemple) dans l'index de script, j'ai pu obtenir l'image ci-dessous. Mon seul problème était que la boîte graphique semblait être la seule boîte d'éléments d'affichage qui me permettait d'obtenir le résultat. De plus, les axes X et Y sont toujours présents et je ne sais pas comment les masquer. Mon code est joint.
Daniel

Re: Superposer un graphique sur un autre graphiquecr = Current Data Table() << Run Script("Cumulative Resistivity");
rpt_cr = Report(cr);
rpt_cr_pic = rpt_cr[PictureBox(1)] << Get Picture ;
Print(rpt_cr_pic << Get Size);
cp = Current Data Table() << Run Script("Cumulative Permeability");
rpt_cp = Report(cp);
rpt_cp_pic = rpt_cp[PictureBox(1)] << Get Picture;
Print(rpt_cp_pic << Get Size);
ds = Current Data Table() << Run Script("Distribution");
rpt_ds = Report(ds);
rpt_ds_pic = rpt_ds[PictureBox(1)] << Get Picture;
g = Graph Box(
FrameSize( 750, 1000 ),
X Scale( 0, 100 ),
Y Scale( 0, 100 ),
<<ADD image=""></ADD>