Comment extraire une image de Manipuler, sans cadre, curseurs et axes?
Je voudrais extraire des images d'un Manipulate
qui utilise un curseur, mais lorsque je le fais à partir du menu contextuel, j'obtiens tout le cadre et le curseur avec. Comment pouvons-nous exporter l'image (au format PNG, par exemple), pour une valeur de curseur donnée (par exemple$k = 0.5$, pour l'exemple ci-dessous), sans le cadre Manipuler, le curseur, et même sans les axes et les graduations?
Et probablement plus compliqué: comment extraire les graphiques avec une résolution plus élevée que ce que montre le Manipulate? (disons 1024 x 1024 pixels au format PNG, au lieu de la résolution inférieure de 600 ci-dessous).
Voici un MWE semi-cool avec lequel jouer:
Manipulate[
ContourPlot[
Cos[x + y] Sin[k x - 3 y],
{x, -2, 2},
{y, -2, 2},
PlotPoints -> 20,
PlotRange -> {{-2, 2}, {-2, 2}},
Axes -> True,
AxesOrigin -> {0, 0},
AxesStyle -> Directive[GrayLevel[0.5]],
AxesLabel -> {
Style["X", Bold, 14],
Style["Y", Bold, 14]
},
ColorFunction -> "Rainbow",
ContourStyle -> Black,
Contours -> Automatic,
ImageSize -> 600
],
{
k, -5, 5, 0.1,
ImageSize -> Large,
Appearance -> {"Labeled", "Closed"},
AppearanceElements -> {"InputField", "Slider"}
},
ControlPlacement -> Bottom,
FrameMargins -> None,
FrameLabel -> {None, None,
Style["Some Funny Title", Bold, 14, FontFamily -> "Helvetica"]}
]
Réponses
Manipulate[
plt = ContourPlot[
Cos[x + y] Sin[k x - 3 y],
{x, -2, 2}, {y, -2, 2},
PlotPoints -> 20,
PlotRange -> {{-2, 2}, {-2, 2}},
Axes -> True,
AxesOrigin -> {0, 0},
AxesStyle -> Directive[GrayLevel[0.5]],
AxesLabel -> {Style["X", Bold, 14], Style["Y", Bold, 14]},
ColorFunction -> "Rainbow",
ContourStyle -> Black,
Contours -> Automatic, ImageSize -> 600
],
{k, -5, 5, 0.1, ImageSize -> Large, Appearance -> {"Labeled", "Closed"}, AppearanceElements -> {"InputField", "Slider"}},
ControlPlacement -> Bottom,
FrameMargins -> None,
FrameLabel -> {None, None, Style["Some Funny Title", Bold, 14, FontFamily -> "Helvetica"]}
]
Export["~/Desktop/test.png", plt, ImageSize -> {1024, 1024}]
(* or *)
Export["~/Desktop/test.png", plt, ImageResolution -> 300]
(* EDIT *)
Export["~/Desktop/test.png", plt[[1]]//Graphics, ImageSize -> {1024, 1024}]
Cela enregistre l'image générée par le réglage du curseur dans une variable appelée plt
. Chaque fois que le curseur change, plt
est mis à jour. Ensuite, j'utilise généralement la Export
commande pour pouvoir contrôler plus facilement les différents paramètres. Un petit aparté: un paramètre d'exportation que j'aime bien est Background -> None
. Pas vraiment pertinent ici, mais cela vous permet d'exporter des images PNG sans arrière-plan. Semble vraiment élégant lors de l'ajout à une affiche ou une présentation si les graphiques ont un contraste suffisant avec l'arrière-plan.
Pour obtenir uniquement les graphiques, ContourPlot
j'ai utilisé la méthode de @ andre314 pour prendre le premier élément de plt
et le transformer en graphique, à savoir plt[[1]]//Graphics
.
Le résultat du code ci-dessus avec ImageSize -> {1024, 1024}
est:

Le résultat de la déclaration d'exportation finale ci-dessus est:

ÉDITER
J'ai trouvé quelque chose de plus simple que ma première réponse:
Appliquer Setting
à la manipulation pour obtenir un graphique normal.
Ensuite, pour supprimer toutes les options de ce graphique, une façon est de prendre la première partie et de réappliquer Graphic

ANCIENNE RÉPONSE
Vous pouvez utiliser la fonction Snapshot dans le Manipuler.
Puis remplacez DynamicModule
par With
(cela peut ne pas être nécessaire),
alors l'évaluation de cela donne une normale Graphics
. Pour supprimer toutes les options de ce graphique, une façon est de prendre la première partie et de réappliquerGraphic
