Superponer un gráfico sobre otro gráficoAmigos,
¿Cuáles son las formas (o la mejor manera) de superponer otro gráfico sobre otro como se muestra en el primer archivo adjunto? El objetivo final es generar múltiples gráficos y organizarlos en una ventana que se guarda como una propiedad de tabla. Luego, esta propiedad de la tabla se ejecuta para que la imagen compuesta final se pueda copiar y pegar en Powerpoint.
El guión que tengo hasta ahora casi me lleva allí (ver el guión adjunto y el segundo archivo adjunto). Mi secuencia de comandos actual obviamente ingresa al Informe para cada gráfico generado y se usa un comando "Obtener imagen" para completar el cuadro de alineación. Intenté tratar el histograma solo como una imagen y hice "Agregar imagen", pero no pude hacerlo funcionar.
Si un comando Agregar imagen es el camino a seguir, mi pregunta adicional es ¿cómo generar adecuadamente los argumentos de "límites" para posicionarlos correctamente?
neil
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) ;


Organización de contenidosLa personalización en masaRe: Superponer un gráfico sobre otro gráficocr = 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>Re: Superponer un gráfico sobre otro gráficoBrady,
Acabo de recibir algo que pareció funcionar hoy, pero también quiero probar tu enfoque.
Basado en el comando "Agregar imagen" (y ejemplo) en el índice de secuencias de comandos, pude obtener la imagen que se muestra a continuación. Mi único problema fue que Graph Box parecía ser el único Display Element Box que me permitía obtener el resultado. Además, los ejes X e Y todavía están presentes, y no estoy seguro de cómo ocultarlos. Mi código está adjunto.
neil

Re: Superponer un gráfico sobre otro gráficoHola,
La única forma que conozco de hacer esto es la siguiente:
1) Obtenga sus imágenes y obtenga las matrices de píxeles para ellas.
2) Sobrescribir una submatriz de los píxeles de la imagen "inferior" con la matriz de píxeles de la imagen "superior".
A continuación se muestra un script que ilustra esto y una imagen (en realidad, una ventana de 3 imágenes donde la imagen "superior" se ha "pegado" en diferentes ubicaciones) que muestra los resultados. Es posible que deba experimentar para obtener su imagen donde la desea, pero este enfoque eventualmente debería funcionar.
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;
);

Salud,
Brady
Re: Superponer un gráfico sobre otro gráficoSolo para mayor claridad, estoy tratando de superponer una imagen de un gráfico (a través de obtener una imagen) sobre otra imagen de gráfico.
Entonces, según el script, obtengo la imagen "rpt_ds_pic" y trato de superponerla en rpt_cr_pic. Sin embargo, solo obtengo el rpt_cr_pic para mi salida, la imagen agregada no aparece.
Revisé el índice de secuencias de comandos (Agregar imagen) y la guía de secuencias de comandos, pero obviamente no estoy captando un concepto fundamental que hace que esto funcione.
Cualquier sugerencia o dirección sería extremadamente útil.
Muchas gracias.
neil
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) ;