フレーム、スライダー、軸を使用せずに、マニピュレートから画像を抽出するにはどうすればよいですか?
Manipulate
スライダーを使用しているからいくつかの写真を抽出したいのですが、ポップアップメニューから抽出すると、すべてのフレームとスライダーが表示されます。特定のスライダー値(たとえば、PNGに)をエクスポートするにはどうすればよいですか?$k = 0.5$、以下の例の場合)、フレーム、スライダーを操作せずに、さらに軸と目盛りを付けずに?
そしておそらくもっとトリッキーです:マニピュレートが示すよりも高い解像度でグラフィックを抽出するにはどうすればよいですか?(たとえば、以下の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
さまざまなパラメーターをより簡単に制御できるように、通常はコマンドを使用します。少し余談ですが、私が非常に気に入っているエクスポートパラメータの1つはBackground -> None
です。ここではあまり関係ありませんが、背景のないPNG画像をエクスポートできます。グラフィックが背景と十分なコントラストを持っている場合、ポスターやプレゼンテーションに追加するときは本当に滑らかに見えます。
グラフィックスフォームだけを取得するために、ContourPlot
@ andre314の最初の要素を取得して、それをグラフィックスに変換する方法を使用plt
しましたplt[[1]]//Graphics
。
上記のコードの結果は次のとおりImageSize -> {1024, 1024}
です。

上記の最終的なエクスポートステートメントの結果は次のとおりです。

編集
私は最初の答えよりも単純なものを見つけました:
Setting
マニピュレートに適用して、通常のグラフィックを取得します。
次に、このグラフィックのすべてのオプションを削除するには、最初の部分を取得して再適用する方法があります Graphic

古い答え
操作でスナップショット機能を使用できます。
次いでremplaceDynamicModule
によってWith
(これは必要ではないかもしれないが)、
これの評価は正常を与えますGraphics
。このグラフィックのすべてのオプションを削除するには、1つの方法は、最初の部分を取得して再適用することです。Graphic
