Bagaimana cara mengekstrak gambar dari Memanipulasi, tanpa bingkai, penggeser, dan sumbu?
Saya ingin mengekstrak beberapa gambar dari Manipulate
yang menggunakan slider, tetapi ketika saya melakukannya dari menu pop-up, saya mendapatkan semua frame dan slider dengannya. Bagaimana kita bisa mengekspor gambar (ke PNG, katakanlah), untuk nilai slider tertentu (katakanlah$k = 0.5$, untuk contoh di bawah), tanpa bingkai Memanipulasi, slider, dan bahkan tanpa sumbu dan kutu?
Dan mungkin lebih rumit: bagaimana kami dapat mengekstrak grafik dengan resolusi yang lebih tinggi daripada yang ditunjukkan oleh Manipulate? (katakanlah 1024 x 1024 piksel dalam format PNG, bukan resolusi yang lebih rendah dari 600 di bawah).
Inilah MWE semi-keren untuk dimainkan:
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"]}
]
Jawaban
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}]
Ini menyimpan bingkai yang dihasilkan oleh pengaturan slider ke variabel yang disebut plt
. Setiap kali slider berubah, plt
diperbarui. Kemudian, saya biasanya menggunakan Export
perintah agar saya dapat lebih mudah mengontrol berbagai parameter. Sedikit tambahan: satu parameter ekspor yang saya suka adalah Background -> None
. Tidak terlalu relevan di sini, tetapi memungkinkan Anda mengekspor gambar PNG tanpa latar belakang. Terlihat sangat apik saat ditambahkan ke poster atau presentasi jika grafiknya cukup kontras dengan latar belakang.
Untuk mendapatkan bentuk grafik saja, ContourPlot
saya menggunakan metode @ andre314 dengan mengambil elemen pertama plt
dan mengubahnya menjadi grafik, yaitu plt[[1]]//Graphics
.
Hasil dari kode di atas dengan ImageSize -> {1024, 1024}
adalah:

Hasil dari pernyataan ekspor akhir dari atas adalah:

EDIT
Saya telah menemukan sesuatu yang lebih sederhana dari jawaban pertama saya:
Terapkan Setting
ke Manipulate untuk mendapatkan grafik normal.
Kemudian untuk menghapus semua opsi grafik ini, salah satu caranya adalah dengan mengambil bagian pertama dan mengajukan permohonan kembali Graphic

JAWABAN LAMA
Anda dapat menggunakan fungsi Snapshot di Memanipulasi.
Kemudian ganti DynamicModule
dengan With
(ini mungkin tidak perlu),
maka evaluasi ini memberikan nilai normal Graphics
. Untuk menghapus semua opsi grafik ini, salah satu caranya adalah dengan mengambil bagian pertama dan mengajukan permohonan kembaliGraphic
