2010-11-27 32 views
2

Je voudrais placer un graphique sur une figure, mais j'ai besoin de points spécifiques dans le graphique pour correspondre à des points spécifiques de la figure.Comment contrôler la mise en attente d'un graphique sur une figure dans Mathematica?

Je sais que je peux importer la figure en utilisant

fig=Import["filename.ext","Graphics"]; 

et je crée mon intrigue en utilisant des graphiques:

p=Plot[Graphics[Points[data]]]; 

Je pense que je dois superposer la parcelle sur la figure en écrivant

Afficher [{fig, p}]

Cependant, je voudrais contrôler la taille de la res Ulting figure sans utiliser la souris et de même être en mesure d'aligner les deux graphiques.

Tout pointeur vers les commandes nécessaires pour cela serait grandement apprécié.

Répondre

4

Au lieu de Show[] utilisation Overlay[] et l'option Alignment:

Overlay[{fig, p}, Alignment -> {-0.75, 0.33}] (* x,y values in [-1,1] *) 

Vous pouvez contrôler la taille des deux Plot et Overlay individuellement en utilisant l'option ImageSize dans l'une des deux. Et n'oubliez pas que vous pouvez obtenir la taille d'image du graphique que vous importez via Import["filename.ext", "ImageSize"]. Donc, pour vous assurer que l'intrigue est la même taille que l'image que vous pouvez faire:

size = Import["filename.ext", "ImageSize"]; 
p = Plot[Graphics[Points[data]], ImageSize->size]; 
+0

Sweet! Merci, je vais essayer. –

+0

en ce qui concerne la taille de la parcelle variable, avez-vous essayé de fixer PlotRangePadding, ImagePadding et ImageMargin? –

+0

Je suppose que Mathematica v 34.5 va corriger tous ces problèmes dans la composition de l'intrigue/graphique/image :( –

0

Le suivant va le coin inférieur gauche de l'image « img » à la position 0,0 des graphiques encaissantes et le à l'échelle que son côté le plus long est 1 dans les coordonnées graphiques.

Show[plot, Graphics[Inset[img, {0, 0}, {0, 0}, 1]]]

Si vous savez où vous voulez mettre votre image en termes de Graphics coordonnées, vous avez terminé. Si vous voulez le mettre à un point en termes de coordonnées absolues, vous devez d'abord le traduire en coordonnées graphiques, ce qui signifie trouver le système de coordonnées de vos graphiques (PlotRange et PlotRangePadding) et le système de coordonnées de l'image rendue (ImageSize et ImagePadding) et déterminer la cartographie.

J'ai dû résoudre un problème similaire earlier et avec ces options réglées manuellement, le positionnement a fonctionné comme prévu.