Как извлечь картинку из Manipulate, без рамки, ползунков и осей?
Я хотел бы извлечь несколько изображений из Manipulate
объекта, в котором используется ползунок, но когда я делаю это из всплывающего меню, я получаю вместе с ним весь кадр и слайдер. Как мы можем экспортировать изображение (например, в PNG) для заданного значения ползунка (скажем,$k = 0.5$, для примера ниже), без рамки Manipulate, ползунка и даже без осей и отметок?
И, возможно, еще сложнее: как мы можем извлечь графику с более высоким разрешением, чем то, что показывает Manipulate? (скажем, 1024 x 1024 пикселей в формате PNG вместо более низкого разрешения 600 ниже).
Вот полукрутая MWE, с которой можно поиграть:
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"]}
]
Ответы
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}]
Это сохраняет кадр, созданный настройкой ползунка, в переменную с именем plt
. Каждый раз, когда ползунок изменяется, plt
он обновляется. Затем я обычно использую эту Export
команду, чтобы упростить управление различными параметрами. Небольшое отступление: мне очень нравится один параметр экспорта Background -> None
. Здесь не очень актуально, но он позволяет экспортировать изображения PNG без фона. Очень красиво смотрится при добавлении к плакату или презентации, если графика имеет достаточный контраст с фоном.
Чтобы получить только графику из формы, ContourPlot
я использовал метод @andre314, который берет первый элемент plt
и превращает его в графику, а именно plt[[1]]//Graphics
.
Результат приведенного выше кода с ImageSize -> {1024, 1024}
:

Результат заключительного оператора экспорта сверху:

РЕДАКТИРОВАТЬ
Я нашел что-то более простое, чем мой первый ответ:
Примените Setting
к Manipulate, чтобы получить нормальную графику.
Затем, чтобы удалить все параметры этого рисунка, один из способов - взять первую часть и повторно нанести Graphic

СТАРЫЙ ОТВЕТ
Вы можете использовать функцию моментального снимка в файле Manipulate.
Затем заменить DynamicModule
на With
(это может быть необязательно),
тогда оценка этого даст нормальный результат Graphics
. Один из способов удалить все параметры этого рисунка - взять первую часть и повторно нанестиGraphic
