Passez la souris sur le point de données pour afficher l'image ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Est-ce que quelqu'un sait si c'est possible ?Survolez un point de données avec la souris, comme un graphique, et affichez une image JPG/GIF dans une fenêtre ou une sorte de boîte d'affichage ?
Je connais et j'utilise <Re : Passez la souris sur le point de données pour afficher l'image ?
Dans JMP 15.0, nous avons ajouté une fonctionnalité appelée graphlets qui offre (entre autres choses) la possibilité d'afficher des images à la demande dans des étiquettes de survol. L'image affichée et ce qui se passe lorsque vous cliquez dessus sont entièrement sous le contrôle de l'utilisateur. Vous pouvez facilement récupérer une image depuis une colonne, depuis un fichier ou depuis une URL construite dynamiquement en fonction du contexte du graphique (par exemple les valeurs X et Y de votre graphique). Il n'est pas nécessaire de stocker des images dans le tableau (bien que cela soit également pris en charge).
Vous pouvez voir cette fonctionnalité en action dans l'échange de fichiers suivant
https://community.jmp.com/t5/JMP-Scripts/WikiReader-Augmenting-Hover-Labels-with-web-data-and-images/ta-p/237488
Pour plus d’informations sur les graphlets, consultez https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/using-jmp.pdf , page 512.
Re : Passez la souris sur le point de données pour afficher l'image ?Merci
Re : Passez la souris sur le point de données pour afficher l'image ?Oui, le script ci-dessus tire parti des colonnes d'expression, qui, je crois, n'ont été introduites qu'avec JMP 12.
Re : Passez la souris sur le point de données pour afficher l'image ?Bonjour, j'ai essayé d'exécuter ce script, mais j'obtiens une erreur sur " Tableau 1 : photo [ 1 ] = p ; " indiquant que le type de colonne ne correspond pas. Est que parce que j'utilise JMP 10 ?
Re : Passez la souris sur le point de données pour afficher l'image ?Merci encore. Maintenant, tout fonctionne à merveille !
Re : Passez la souris sur le point de données pour afficher l'image ?Voir le message Piège à souris et boîte à cadre biviarié car j'avais exactement la même question.
Re : Passez la souris sur le point de données pour afficher l'image ?Merci! C'était exactement ce dont j'avais besoin. C'est incroyable ce que jmp peut faire.
Cependant, bien que l'image de la puce s'affiche maintenant si je clique dessus, je me demande pourquoi le point de données (puce) sur la carte n'est plus marqué/sélectionné. Mais là encore, ce n'est pas vraiment nécessaire...
Merci!
Re : Passez la souris sur le point de données pour afficher l'image ?MouseTrap doit être appliqué à une boîte de cadre.Le générateur de graphiques est un affichage assez complexe qui comprend une zone de cadre.
fenêtre = Nouvelle fenetre ( "Carte des plaquettes" ,
go = Tableau de données ( "Carte des plaquettes de table de données" ) << Générateur de graphiques (
Variables ( X ( : PosX ) , Oui ( : PosY ) , Couleur ( : Valeur ) ) ,
Éléments ( Points ( X , Oui , Légende ( 9 ) ) ) ,
) ;
) ;
RVB = go << Rapport ;
RVB [ boîte à cadre ( 1 )] << Ajouter un script graphique ( Piege a souris ( imprimer ( "test" ))) ;
Re : Passez la souris sur le point de données pour afficher l'image ?Merci Ian et msharp. Je vais essayer plusieurs façons et voir quelles solutions nous conviennent le mieux. La fonction MouseTrap() est certainement utile, mais je vais également essayer de masquer la colonne d'image et de vérifier si nous sommes réellement limités par la vitesse ou la mémoire.
EDIT : j’ai des difficultés à ajouter la fonction MouseTrap() au Graph Builder. Je cherchais une solution comme celle-ci :
ex = 20 ;
exy = 50 ;
window = Nouvelle fenêtre( "Carte des plaquettes",
gb = Table de données ("Carte de tranche de table de données") << Générateur de graphiques (
Variables( X( :PosX ), Y( :PosY ), Couleur( :Value ) ),
Éléments( Points( X, Y, Légende( 9 ) ) ),
Piege a souris(
exx = X( :PosX );
exy = Oui( :PosY );
Afficher(exx);
,
Afficher(exy);
)
);
);
Franchement, je devinais juste en insérant la fonction MouseTrap(), mais je n'ai trouvé aucune information concernant l'utilisation combinée de Graph Builder et MouseTrap.
Est-il possible d'utiliser la fonction MouseTrap() avec Graph Builder ?
Re : Passez la souris sur le point de données pour afficher l'image ?Je crois que la réponse courte est non. Il n'y a pas beaucoup de capacités HOVER lors de l'interaction avec des graphiques.
Si l'utilisateur "clique" sur le point, il existe plusieurs options jusqu'à mousetrap() qui interagit avec les clics, les glissements, etc. de l'utilisateur dans une boîte graphique.Vous pouvez également utiliser un gestionnaire d'état de ligne qui exécutera des scripts lorsque les utilisateurs interagissent avec une table de données. Par exemple, la sélection d'un point dans un graphique sélectionnera également la ligne du tableau de données, que votre gestionnaire pourra ensuite utiliser pour exécuter un script.Ils ont tous deux leurs avantages et leurs inconvénients.
Quoi qu'il en soit, si la mémoire est le seul problème, vous devriez envisager la solution d'Ian consistant simplement à masquer la table de données et/ou la colonne.Si vous êtes préoccupé par la vitesse, c'est à dire. le temps qu'il faut pour générer une image/charger un fichier image dans chaque cellule, je recommanderais simplement de condenser le tableau de données.Vos utilisateurs ont-ils BESOIN de voir les images du grand tableau ?Pouvez-vous sous-ensembler les données pour créer des ensembles de données plus petits avec lesquels les utilisateurs peuvent ensuite interagir ?
Re : Passez la souris sur le point de données pour afficher l'image ?Bien que je n'aie pas vérifié, j'imagine que les cellules « vides » dans une colonne d'expression n'ont presque aucune surcharge. Et vous pouvez masquer cette colonne, ou rendre le tableau invisible si besoin est.
Mais si vous n'aimez pas cette approche, consultez 'MouseTrap()' et 'IsCommandKey()' dans Aide > Index des scripts.
Re : Passez la souris sur le point de données pour afficher l'image ?Salut,
cet exemple fonctionne bien pour moi, mais je suis intéressé par une solution différente. Le problème est que je n’aime pas remplir chaque ligne avec une image, car cela consommerait beaucoup de mémoire dans une table Big Data. Compte tenu de cela, ma question est la suivante : s'il est possible d'exécuter du code dans une colonne d'expression, lorsque la souris survole un point de données ? Ensuite, les positions X et Y de ce point pourraient être utilisées comme argument dans la colonne d'expression pour ouvrir l'image appropriée.
Est-ce possible?
Merci beaucoup!
Re : Passez la souris sur le point de données pour afficher l'image ?Oui c'est possible. Le moyen le plus simple consiste simplement à ajouter une colonne d’images et à attribuer à cette colonne une propriété label.Voir ci-dessous pour un exemple.
Names Default to Here(1);table1 = New Table( "one", Add Rows( 1 ), New Column( "pic", Expression, Set Values( {Empty()} ) ));// make random imaged = J(25,50,rgbcolor(randomuniform(),randomuniform(),randomuniform()));p = newimage(d);// store in table1table1:pic[1] = p;// make a new tabletable2 = New Table( "two", Add Rows( 1 ), New Column( "pic", Expression, Set Values( {Empty()} ) ));// put two copies in table 2, from table 1table2:pic[1] = table1:pic[1];table2<table2:pic[2] = table1:pic[1];//Add X/Y columnstable2 << New Column("X", Numeric, Continous, Set Values({1,2}));table2 << New Column("Y", Numeric, Continous, Set Values({2,1}));//label pic columntable2:pic << Label;//open bivariate analysisbiv = table2 << Bivariate( Y( :Y ), X( :X ) );Le script ci-dessous a été adapté du code de Craige Re: JMP_12 : Incorporer une expression JSL directement dans une ligne si vous vous demandez ce qu'il fait d'autre.