프레임, 슬라이더 및 축없이 Manipulate에서 그림을 추출하는 방법은 무엇입니까?
Manipulate
슬라이더를 사용하는 에서 일부 사진을 추출하고 싶지만 팝업 메뉴에서하면 모든 프레임과 슬라이더가 함께 표시됩니다. 주어진 슬라이더 값에 대해 그림 (예 : PNG)을 어떻게 내보낼 수 있습니까 (예 :$k = 0.5$, 아래 예), 조작 프레임, 슬라이더 및 축과 눈금없이?
그리고 아마도 더 까다로울 것입니다. Manipulate가 보여주는 것보다 더 높은 해상도로 그래픽을 어떻게 추출 할 수 있습니까? (아래의 600보다 낮은 해상도 대신 PNG 형식의 1024 x 1024 픽셀).
다음은 함께 플레이 할 수있는 멋진 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
일반 그래픽을 얻으려면 조작에 적용하십시오 .
그런 다음이 그래픽의 모든 옵션을 제거하는 한 가지 방법은 첫 번째 부분을 가져 와서 다시 적용하는 것입니다. Graphic

오래된 답변
조작에서 스냅 샷 기능을 사용할 수 있습니다.
그런 다음 remplace DynamicModule
by With
(필요하지 않을 수 있음),
이것의 평가는 정상을 제공합니다 Graphics
. 이 그래픽의 모든 옵션을 제거하는 한 가지 방법은 첫 번째 부분을 가져 와서 다시 적용하는 것입니다.Graphic
