1
$\begingroup$

Mouseover is defined as Mouseover[expr,over]. I have a plot on the left and a graphic on the right. Can I use Mouseover on the right graphic (expression) and have the result (over) show up on the left plot?

For example, I move my mouse over the top stage rectangle and as a result, "stage 1" shows up on the plot on the left. Is this possible?

enter image description here

Here is my code:

Module[{y1, y2, p1, p2},
 y1[x_] := 100*(x - 0.05) + 10;
 y2[x_] := 84.48*x;

 p1 = Plot[{y1[x], y2[x]}, {x, 0, 0.7}, PlotRangePadding -> None, 
   PlotStyle -> {{Thick, Black}, {Thick, Blue}},
   Frame -> True, 
   FrameLabel -> {Style["X", Italic], Style["Y", Italic]}, 
   LabelStyle -> {17, Black}, ImageSize -> {400, 400}, 
   AspectRatio -> Full];

 p2 = Graphics[{
    {EdgeForm@Thick, FaceForm@None, 
     Rectangle[{0, #}, {1, # + 0.5}] & /@ Range@5},

    {[email protected],
     Arrow[{{0.25, # - 0.5}, {0.25, #}}] & /@ Range[2, 5],
     Arrow[{{0, 0.5}, {0.25, 0.5}, {0.25, 1}}], 
     Arrow[{{0.25, 5.5}, {0.25, 6}, {0, 6}}],
     Arrow[{{0.75, #}, {0.75, # - 0.5}}] & /@ Range[2, 5],
     Arrow[{{0.75, 1}, {0.75, 0.5}, {1, 0.5}}], 
     Arrow[{{1, 6}, {0.75, 6}, {0.75, 5.5}}]},

    Text[Style[6 - #, 17, Background -> White], {0.5, 0.25 + #}] & /@ 
     Range@5
    }, ImageSize -> {200, 400}];

 Grid@{{p1, p2}}
 ]
$\endgroup$

1 Answer 1

1
$\begingroup$

For simple cases it is a job for Annotation:

{ Annotation[Framed[1], "Stage 1", "Mouse"]
, Graphics[{Circle[], Inset@Dynamic[MouseAnnotation[""]]}]
}

For more complicated you can make use of EvenHandler and related events: "MouseMoved", "MouseEntered", "MouseExited".

See:

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.