Superponer un gráfico sobre otro gráficoMuchachos,
¿Cuáles son las formas (o la mejor forma) de superponer otro gráfico sobre otro como se muestra en el primer adjunto? El objetivo final es generar múltiples gráficos, organizarlos en una ventana que se guarda como una propiedad de tabla. Esta propiedad de tabla se ejecuta luego para que la imagen compuesta final se pueda copiar y pegar en Powerpoint.
El guión que tengo hasta ahora casi me lleva allí (vea el guión adjunto y el segundo archivo adjunto). Mi secuencia de comandos actual, obviamente, va 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 hacer un "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 colocarlos 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) ;


GráficosScriptingRe: superponer un gráfico a otro gráficoSolo para mayor claridad, estoy tratando de superponer una imagen de un gráfico (a través de obtener imagen) sobre otra imagen de gráfico.
Entonces, según el script, obtengo la imagen "rpt_ds_pic" y trato de superponerla a rpt_cr_pic. Sin embargo, solo obtengo rpt_cr_pic para mi salida, la imagen agregada no aparece.
He revisado el índice de secuencias de comandos (Agregar imagen) y la guía de secuencias de comandos, pero obviamente no estoy comprendiendo un concepto fundamental que hace que esto funcione.
Cualquier sugerencia o dirección sería de gran ayuda.
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) ;
Re: superponer un gráfico a 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) Sobrescriba una submatriz de 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 tenga que 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 a 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 el ejemplo) en el índice de secuencias de comandos, pude obtener la imagen que se muestra a continuación. Mi único problema era que el Cuadro de gráficos parecía ser el único Cuadro de elementos de visualización 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 a 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>