Jak wyodrębnić obraz z Manipulate, bez ramki, suwaków i osi?
Chciałbym wyodrębnić kilka obrazów z Manipulate
suwaka, ale kiedy robię to z wyskakującego menu, otrzymuję z nim całą ramkę i suwak. Jak możemy wyeksportować obraz (powiedzmy do PNG) dla danej wartości suwaka (powiedzmy$k = 0.5$, na przykład poniżej), bez ramki Manipulate, suwaka, a nawet bez osi i kleszczy?
I chyba trudniejsze: jak możemy wyodrębnić grafikę o wyższej rozdzielczości niż to, co pokazuje Manipulate? (powiedzmy 1024 x 1024 pikseli w formacie PNG, zamiast niższej rozdzielczości 600 poniżej).
Oto pół-fajne MWE do zabawy:
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"]}
]
Odpowiedzi
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}]
To zapisuje ramkę wygenerowaną przez ustawienie suwaka do zmiennej o nazwie plt
. Za każdym razem, gdy suwak się zmienia, plt
jest aktualizowany. Następnie zazwyczaj używam Export
polecenia, aby łatwiej kontrolować różne parametry. Trochę na bok: jeden parametr eksportu, który bardzo mi się podoba, to Background -> None
. Nie ma tu znaczenia, ale pozwala eksportować obrazy PNG bez tła. Wygląda naprawdę zgrabnie podczas dodawania do plakatu lub prezentacji, jeśli grafika ma wystarczający kontrast z tłem.
Aby uzyskać tylko grafikę ContourPlot
z metody @ andre314, wziąłem pierwszy element plt
i przekształciłem go w grafikę, a mianowicie plt[[1]]//Graphics
.
Rezultatem powyższego kodu ImageSize -> {1024, 1024}
jest:

Wynikiem końcowego oświadczenia eksportowego z powyższego jest:

EDYTOWAĆ
Znalazłem coś prostszego niż moja pierwsza odpowiedź:
Zastosuj Setting
do Manipuluj, aby uzyskać normalną grafikę.
Następnie, aby usunąć wszystkie opcje tej grafiki, jednym ze sposobów jest wzięcie pierwszej części i ponowne zastosowanie Graphic

STARA ODPOWIEDŹ
Możesz użyć funkcji Snapshot w Manipulate.
Następnie zamień DynamicModule
przez With
(może to nie być konieczne),
a ocena tego daje normalne Graphics
. Aby usunąć wszystkie opcje tej grafiki, jednym ze sposobów jest wzięcie pierwszej części i ponowne zastosowanieGraphic
