Ajouter une image comme arrière-plan d'un graphiqueChers tous,
J'ai écrit le script suivant. Après avoir ouvert une table de données, il prend les données et crée un graphique à l'aide du générateur de graphiques. Ensuite, il charge une image qui porte le même nom que la table de données ouverte et utilise cette image comme arrière-plan pour le graphique.
Afin de faire fonctionner le script, j'ai dû ajouter au nom de la table de données l'extension de fichier .png dans le cadre du nom. J'ai donc dû nommer à la fois l'image et la table de données en ajoutant .png dans leur nom (le fichier image a l'extension .png).
Par exemple, si le nom de l’image est sample.png, j’ai dû le changer en sample.png.png.
Bien sûr, je n'aime pas ça, mais si je ne fais pas cette modification, jmp dit qu'il ne trouve pas le fichier image.
Je suis sûr que le problème peut être résolu de manière plus propre.
Merci beaucoup pour toute aide.
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>
Personnalisation de masseRe : Ajouter une image en arrière-plan d'un graphiquePeut-être que l'un de ces éléments fonctionnera pour vous :
filename = "testname.html";
Substr(filename, 1, Contains(filename, ".")-1);
Left(filename, Length(fileName) - 5);
Word(1, filename, ".");
Consultez l'index des scripts pour plus d'informations sur ce que font les fonctions.
Re : Ajouter une image en arrière-plan d'un graphiqueMerci beaucoup, cela a fonctionné et j'ai résolu mon problème.
Savez-vous comment puis-je me débarrasser de l’extension de fichier dans une chaîne de texte ? J'ai un script qui lit les noms des fichiers image dans un dossier et met leurs noms dans un vecteur. Chaque nom contient également l'extension. Existe-t-il une commande simple pour éliminer les quatre dernières lettres d’une chaîne de texte ?
Merci beaucoup,
Marcello.
Re : Ajouter une image en arrière-plan d'un graphiqueMerci beaucoup!Re : Ajouter une image en arrière-plan d'un graphiqueSous Windows, le message Get Name() envoyé à une table de données renvoie uniquement le nom de la table, sans le « .jmp » ajouté.
Names Default To Here( 1 );
dt = Open( "$DESKTOP/Big Class.jmp" );
Show( dt << get name() );
Enregistrer:
//:*/
Names Default To Here( 1 );
dt = Open( "$DESKTOP/Big Class.jmp" );
Show( dt << get name() );
/*:
dt << get name() = "Big Class";
Vous devrez donc ajouter le ".png" pour obtenir un nom de fichier complet pour New Image().
Voici un exemple utilisant Big Class (copié sur votre bureau) et le fichier Big Class.png ci-joint ici.
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 : Sur Mac, < Remplacer par() pour remplacer le ".jmp" par ".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 : Ajouter une image en arrière-plan d'un graphiqueSalut,
Le problème est que la variable "n" est une chaîne, pas une image même après avoir appelé la nouvelle image. Je n'ai pas trouvé de moyen de convertir directement une chaîne en image mais vous pouvez créer un factice txtb = Text Box (n), puis obtenir l'image de cet objet txtimg = tctb << Get Picture, et enfin utiliser la variable txtimg comme arrière-plan.
J'espère que ça aide. D’autres peuvent avoir des moyens plus élégants de résoudre ce problème.
Meilleur,
TS