Wie extrahiere ich ein Bild aus Manipulate ohne Rahmen, Schieberegler und Achsen?
Ich möchte einige Bilder aus einem Bild extrahieren Manipulate
, das einen Schieberegler verwendet, aber wenn ich dies über das Popup-Menü mache, bekomme ich den gesamten Rahmen und den Schieberegler damit. Wie können wir das Bild (z. B. nach PNG) für einen bestimmten Schiebereglerwert (z. B.) exportieren?$k = 0.5$, für das folgende Beispiel), ohne den Rahmen "Manipulieren", den Schieberegler und sogar ohne die Achsen und Häkchen?
Und wahrscheinlich kniffliger: Wie können wir die Grafiken mit einer höheren Auflösung extrahieren als das, was das Manipulieren zeigt? (Sagen wir 1024 x 1024 Pixel im PNG-Format anstelle der niedrigeren Auflösung von 600 unten).
Hier ist eine halbcoole MWE zum Spielen:
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"]}
]
Antworten
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}]
Dadurch wird der durch die Schiebereglereinstellung erzeugte Frame in einer aufgerufenen Variablen gespeichert plt
. Jedes Mal, wenn sich der Schieberegler ändert, plt
wird er aktualisiert. Dann verwende ich normalerweise den Export
Befehl, um die verschiedenen Parameter einfacher steuern zu können. Ein bisschen beiseite: Ein Exportparameter, den ich sehr mag, ist Background -> None
. Hier nicht wirklich relevant, aber Sie können PNG-Bilder ohne Hintergrund exportieren. Sieht beim Hinzufügen zu einem Poster oder einer Präsentation sehr gut aus, wenn die Grafiken einen ausreichenden Kontrast zum Hintergrund haben.
Um nur die Grafiken zu erhalten, habe ContourPlot
ich die Methode von @ andre314 verwendet, das erste Element von zu nehmen plt
und es in eine Grafik umzuwandeln , nämlich plt[[1]]//Graphics
.
Das Ergebnis des obigen Codes mit ImageSize -> {1024, 1024}
ist:

Das Ergebnis der endgültigen Exportanweisung von oben ist:

BEARBEITEN
Ich habe etwas Einfacheres gefunden als meine erste Antwort:
Auf Setting
Manipulieren anwenden , um eine normale Grafik zu erhalten.
Um dann alle Optionen dieser Grafik zu entfernen, besteht eine Möglichkeit darin, den ersten Teil zu übernehmen und erneut anzuwenden Graphic

ALTE ANTWORT
Sie können die Snapshot-Funktion im Manipulieren verwenden.
Dann remplace DynamicModule
durch With
(dies kann nicht notwendig sein),
dann die Auswertung ergibt dies eine normale Graphics
. Um alle Optionen dieser Grafik zu entfernen, besteht eine Möglichkeit darin, den ersten Teil zu übernehmen und erneut anzuwendenGraphic
