Lorsque j'exécute le code suivant Je m'attends à ce que la commande de localisation soit dans les limites du premier graphique, mais elle peut plutôt être déplacée autour de la région GraphicsGrid. Y a-t-il une erreur dans mon code? P> J'ai également essayé p> au lieu de p> Mais cela se comporte complètement faux. P> update strong> p> Merci à tout le monde, c'est ma solution finale: p> p>
Manipulate[
distr1 = BinormalDistribution[p1, {1, 1}, \[Rho]1];
distr2 = BinormalDistribution[p2, {1, 1}, \[Rho]2];
Grid[
{
{Graphics[{Locator[p1], Locator[p2]},
PlotRange -> {{-5, 5}, {-5, 5}}]},
{Plot3D[{PDF[distr1, {x, y}], PDF[distr2, {x, y}]}, {x, -5, 5}, {y, -5, 5}, PlotRange -> All]}
}],
{{\[Rho]1, 0}, -0.9, 0.9}, {{\[Rho]2, 0}, -0.9, 0.9},
{{p1, {1, 1}}, Locator},
{{p2, {1, 1}}, Locator}
]
3 Réponses :
Je ne suis pas sûr de ce que vous essayez d'atteindre. Je vois un certain nombre de problèmes, mais je ne sais pas quoi parler. Peut-être que vous voulez juste un simple slider2d code> construction?
DynamicModule[{pt = {{-1, 3}, {1, 1}}},
Column[{
LocatorPane[Dynamic[pt],
Framed@Graphics[{}, PlotRange -> {{-5, 5}, {-5, 5}}]],
Dynamic@
Plot3D[{x^2 pt[[1, 1]] + y^2 pt[[1, 2]],
-x^2 pt[[2, 1]] - y^2 pt[[2, 1]]},
{x, -5, 5}, {y, -5, 5}]
}]
]
J'ai utilisé deux objets Slider2D, mais je préfère avoir deux localisateurs sur le même graphique.
Si vous examinez l'INPUTFORD, vous constaterez que GraphicsGrid renvoie un objet graphique. Ainsi, le localisateur se déplace effectivement tout au long de l'image.
Manipulate[ Grid[{ {Graphics[Locator[p], Axes -> True, PlotRange -> {{-3, 3}, {-3, 3}}]}, {Graphics[Line[{{0, 0}, p}], Axes -> True, PlotRange -> {{-3, 3}, {-3, 3}}]}}, Frame -> All], {{p, {1, 1}}, Locator}]
Je voté cela, mais vous n'avez pas besoin localisateur code> dans le premier
graphiques code> morceau; C'est redondant.
En effet, Max a utilisé une sorte de spécification rectangle (BL, TR) pour la gamme, tandis que le MMA utilise une spécification {Xrange, Yrange}
@ M.Wizard, voulez-vous dire celui à graphiques [localisateur [p], axes-> true ... code>. Je pense que c'est nécessaire, en supprimant cela crée une erreur pour moi. Semble être nécessaire pour la façon dont la manipulation évalue les choses. Pourriez-vous expliquer ce que vous vouliez dire par ce commentaire?
@dbjohn graphiques [{}, Plottrange -> ... code> est adéquat. Dans
manipuler code> la ligne
{{p, {1, 1}}, localisateur} code> génère déjà un localisateur; Vous n'avez pas besoin de le faire deux fois.
Il s'agit d'une variation de la méthode utilisée par M. Wizard. P> locatorpane [] code> fait un bon travail de confination du localisateur à une région.
Column[{LocatorPane[Dynamic[pt3],Framed@Graphics[{Line[{{-1, 0}, Dynamic@pt3}]},
ImageSize -> 150, PlotRange -> 3]]}]
En fait, je voulais avoir deux graphiques. Un 2D pour sélectionner une paire de coordonnées X et Y et le second est 3D pour afficher deux distributions binomiales avec des moyens correspondant aux coordonnées du localisateur. Mais votre solution fonctionne bien. Merci.
@belisarius je fais ce genre de chose tout le temps.
Y a-t-il une raison pour laquelle vous n'avez pas simplement placé la ligne dans un
locatorpane [] code>? Cela vous aurait permis de rendre le localisateur assis précisément sur l'emplacement où il a un effet, à savoir la fin du segment de la ligne.
@David Carraher Ce n'est qu'un petit exemple. Dans mon ordinateur portable, il faut deux localisateurs qui choisiront deux paires de coordonnées X et Y pour les moyens de deux distributions binimomiques qui seront affichées sur un graphique 3D. Donc, celles-ci devraient être deux graphes distincts.
S'il vous plaît voir ma réponse mise à jour.