Agregar una imagen como fondo de un gráficoEstimados,
Escribí el siguiente guión. Después de abrir una tabla de datos, toma los datos y crea un gráfico utilizando el generador de gráficos. Luego carga una imagen que tiene el mismo nombre que la tabla de datos abierta y usa esa imagen como fondo para el gráfico.
Para que el script funcionara, tuve que agregar al nombre de la tabla de datos la extensión de archivo .png como parte del nombre. Así que tuve que nombrar tanto la imagen como la tabla de datos agregando .png en su nombre (el archivo de imagen tiene la extensión .png).
Por ejemplo, si el nombre de la imagen es muestra.png, tuve que cambiarlo a muestra.png.png.
Por supuesto que no me gusta esto, pero si no hago este cambio jmp dice que no puede encontrar el archivo de imagen.
Estoy seguro de que el problema se puede resolver de una manera más limpia.
Muchas gracias por cualquier ayuda.
Names Default To Here(1);
dt=Current Data Table();
gb = dt <<
Graph Builder(
Variables( X( :x ), Y( :y ), Overlay( :track ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"x",
ScaleBox,
{Min( 0 ), Max( 280 ), Inc( 50 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"y",
ScaleBox,
{Min( 0 ), Max( 265 ), Inc( 50 ), Minor Ticks( 1 )}
),
Dispatch( {}, "Graph Builder", FrameBox, {Transparency( 0.05 )} )
)
);
frame = (gb << report)[FrameBox( 1 )];
n = dt << Get Name();
img = newImage(n);
img<<ROTATE></ROTATE>
Tabla de datosGráficossecuencias de comandosRe: Añadir una imagen como fondo de un gráficoTal vez alguno de estos te sirva:
filename = "testname.html";
Substr(filename, 1, Contains(filename, ".")-1);
Left(filename, Length(fileName) - 5);
Word(1, filename, ".");
Consulte el índice de secuencias de comandos para obtener más información sobre lo que hacen las funciones.
Re: Añadir una imagen como fondo de un gráficoMuchas gracias, esto funcionó y resolví mi problema.
¿Sabes cómo puedo deshacerme de la extensión de archivo en una cadena de texto? Tengo un script que lee los nombres de los archivos de imágenes en una carpeta y los coloca en un vector. Cada nombre contiene también la extensión. ¿Existe un comando simple para eliminar las últimas cuatro letras de una cadena de texto?
Muchas gracias,
Marcello.
Re: Añadir una imagen como fondo de un gráfico¡Muchas gracias!Re: Añadir una imagen como fondo de un gráficoEn Windows, el mensaje Get Name() a una tabla de datos devuelve solo el nombre de la tabla, sin agregar ".jmp".
Names Default To Here( 1 );
dt = Open( "$DESKTOP/Big Class.jmp" );
Show( dt << get name() );
Tronco:
//:*/
Names Default To Here( 1 );
dt = Open( "$DESKTOP/Big Class.jmp" );
Show( dt << get name() );
/*:
dt << get name() = "Big Class";
Por lo tanto, deberá agregar el ".png" para obtener un nombre de archivo completo para Nueva imagen ().
Aquí hay un ejemplo usando Big Class (copiado en su escritorio) y el archivo Big Class.png adjunto aquí.
Names Default To Here( 1 );
dt = Open( "$DESKTOP/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :weight ), Y( :height ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", FrameBox, {Transparency( 0.5 )} ) )
);
frame = (gb << report)[FrameBox( 1 )];
n = dt << Get Name();
img = New Image( "$DESKTOP/" || n || ".png" );
frame << Add Image(
image( img ),
Bounds(
Left( 61.2587412587413 ),
Right( 179.370629370629 ),
Top( 70.8292080975384 ),
Bottom( 48.5033161162993 )
),
SetSize( {799, 620} )
);
NB: en Mac, < Sustituir en () para reemplazar el ".jmp" con ".png".
Names Default To Here( 1 );
dt = Open( "~/Desktop/Big Class.jmp" );
gb = dt << Graph Builder(
Variables( X( :weight ), Y( :height ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", FrameBox, {Transparency( 0.5 )} ) )
);
frame = (gb << report)[FrameBox( 1 )];
n = dt << Get Name();
Substitute Into( n, ".jmp", ".png" );
img = New Image( "~/Desktop/" || n );
//img<<ROTATE></ROTATE>
Re: Añadir una imagen como fondo de un gráficoHola,
El problema es que la variable "n" es una cadena, no una imagen, incluso después de llamar a la Nueva imagen. No he encontrado una manera de convertir directamente una cadena en una imagen, pero puede crear un txtb = cuadro de texto (n) ficticio, y luego obtener la imagen de ese objeto txtimg = tctb << Obtener imagen, y finalmente usar la variable txtimg como fondo.
Espero que ayude. Otros pueden tener formas más elegantes de abordar esto.
Mejor,
TS