Como extrair uma imagem de Manipular, sem moldura, controles deslizantes e eixos?
Gostaria de extrair algumas fotos de um Manipulate
que usa um controle deslizante, mas quando faço isso a partir do menu pop-up, obtenho todo o quadro e o controle deslizante com ele. Como podemos exportar a imagem (para PNG, digamos), para um determinado valor de controle deslizante (digamos$k = 0.5$, para o exemplo abaixo), sem o quadro Manipular, controle deslizante e mesmo sem os eixos e tiques?
E provavelmente mais complicado: como podemos extrair os gráficos com uma resolução maior do que o que o Manipular mostra? (digamos 1024 x 1024 pixels no formato PNG, em vez da resolução inferior de 600 abaixo).
Aqui está um MWE semi-legal para brincar:
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"]}
]
Respostas
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}]
Isso salva o quadro gerado pela configuração do controle deslizante em uma variável chamada plt
. Cada vez que o controle deslizante muda, plt
é atualizado. Então, normalmente uso o Export
comando para controlar mais facilmente os vários parâmetros. Um pouco à parte: um parâmetro de exportação que eu gosto bastante é Background -> None
. Não é muito relevante aqui, mas permite exportar imagens PNG sem fundo. Parece muito bom quando adicionado a um pôster ou apresentação se os gráficos tiverem contraste suficiente com o fundo.
Para obter apenas os gráficos, ContourPlot
usei o método de @ andre314 de pegar o primeiro elemento de plt
e transformá-lo em um gráfico, a saber plt[[1]]//Graphics
.
O resultado do código acima com ImageSize -> {1024, 1024}
é:

O resultado da declaração de exportação final acima é:

EDITAR
Eu encontrei algo mais simples do que minha primeira resposta:
Aplique Setting
ao Manipulado para obter um gráfico normal.
Então, para remover todas as opções deste gráfico, uma maneira é pegar a primeira parte e reaplicar Graphic

RESPOSTA ANTIGA
Você pode usar a função Snapshot em Manipular.
Então remplace DynamicModule
by With
(pode não ser necessário),
então a avaliação deste dá um normal Graphics
. Para remover todas as opções deste gráfico, uma maneira é pegar a primeira parte e reaplicarGraphic
