Jendela pop-up di R & Emacs

Saya menggunakan ESS agar tetap menggunakan Emacs saat bekerja dengan R. Setiap kali saya membuat plot, pop-up baru muncul dengan grafik. Jendela baru ini sepertinya merupakan bagian dari proses R yang dipanggil di dalam Emacs. Dengan demikian, jendela baru bukan bagian dari daftar buffer dan tampaknya berada di luar lingkungan Emacs.

Bisakah jendela baru dibuat oleh R, berisi mis. grafik yang dipanggil oleh plot() atau fungsi masing-masing di ggplot2/lattice, dipaksa untuk tetap berada di dalam lingkungan Emacs? Sehingga plot tersebut tersedia sebagai buffer baru.

Terima kasih!


person mropa    schedule 19.02.2011    source sumber


Jawaban (5)


Tidak, maaf, tidak bisa. Buffer Emacs adalah teks. Jendela grafis adalah perangkat grafis.

Tapi Anda bisa melakukannya sendiri. Sebelum membuat plot, atau bahkan di awal sesi, katakanlah

pdf(file="/tmp/myplotfile.pdf")

dan sekarang plot akan mengarah ke sana. Anda kemudian dapat membuka file pdf di Emacs, dan versi terbaru menyertakan pratinjau pdf di dalam Emacs (setidaknya di kotak Linux saya, tidak yakin apakah saya memerlukan mode tambahan untuk itu). Itu akan mendekati kebutuhan Anda.

person Dirk Eddelbuettel    schedule 19.02.2011
comment
oke, itu mungkin ide. tapi kemudian saya harus memanggil 'dev.off()' setiap kali saya memanggil fungsi plot dan memulai fungsi 'pdf()' baru sebelum saya membuat plot baru atau memperbarui yang lama. - person mropa; 19.02.2011
comment
Anda dapat menambahkan beberapa plot ke file yang sama, lihat opsi help(pdf) dan onefile. Namun Anda mungkin perlu memanggil dev.off() untuk menyinkronkan/membilas buffer file. Namun itu mungkin harga yang harus Anda bayar untuk pola penggunaan yang agak tidak biasa. - person Dirk Eddelbuettel; 20.02.2011
comment
Saya menggunakan mode DocView di Emacs saat memuat pdf. Pembaruan otomatis tidak bekerja dengan lancar, jadi ketika saya memanggil 'plot()' dua kali, buffer dengan pdf mencatat kesalahan. hanya setelah memanggil 'dev.off' buffer diperbarui dan saya melihat dua plot. hmm....ok, kalau begitu saya rasa saya tetap pada setting biasa. tapi terima kasih dirk atas informasinya. - person mropa; 20.02.2011
comment
Anda juga dapat menggunakan png(...) sehingga Emacs tidak harus menggunakan Ghostscript untuk mengonversi PDF ke PNG. Sayangnya mode pengembalian otomatis tampaknya tidak berfungsi dengan baik sama sekali meskipun M-x revert-buffer biasa berfungsi. - person Nicholas Riley; 20.02.2011

Oh ya, itu bisa...

Di ESS, lakukan ini:

png(file="tmp.png")
plot(1:10)
dev.off()
# [[tmp.png]]

Tidak ada apa-apa. Sekarang lakukan mode gambar ESC X (ya, ada dua di sana).

Ini menempatkan buffer Anda ke mode minor gambar, itu akan melihat [[tmp.png]] dan memuat gambar Anda di sana. Ini harusnya dapat diotomatisasi dengan mudah. Ini adalah pertama kalinya saya menemukannya sendiri, jadi mungkin ada cara yang lebih baik untuk melakukannya.

Jelas ada beberapa obrolan di daftar ESS tentang ini:

https://stat.ethz.ch/pipermail/ess-help/2009-August/005474.html

tapi saya heran ini belum ada di inti ESS...

person Spacedman    schedule 19.02.2011
comment
Nah itu kurang lebih sama dengan jawaban saya sebelumnya, dan bukan yang diminta OP. Dia menginginkan buffer emacs sebagai perangkat grafis R asli. Yang mana yang harus dikodekan. - person Dirk Eddelbuettel; 20.02.2011
comment
Hmm ah ya, sebagai buffer baru... Sayangnya saya rasa Anda tidak dapat menulis driver grafis dalam R murni saat ini, yang akan membuat melakukan ini jauh lebih mudah... - person Spacedman; 20.02.2011
comment
omegahat.org/RGraphicsDevice/overview.html sepertinya saya penuh kesalahan hari ini. .. - person Spacedman; 20.02.2011

Ini sepertinya bukan solusi yang Anda cari karena ini melibatkan mengubah Emacs menjadi window manager (berfungsi untuk Linux dan MacOS): paket EXWM (Emacs X Window Manager) adalah pengelola jendela ubin berfitur lengkap yang mengubah semua X jendela menjadi buffer Emacs.

Berikut adalah contoh tampilannya (perhatikan jendela R Graphics di sebelah kanan yang sekarang menjadi buffer Emacs):

masukkan deskripsi gambar di sini

Ini memungkinkan Anda untuk menggunakan pengikatan kunci Emacs, konfigurasi, dll. ke semua jendela X.

person prosoitos    schedule 08.07.2018
comment
Ini bagus. Bisakah Anda memberikan rincian lebih lanjut tentang cara Anda mengaturnya agar berfungsi dengan baik setelah menginstal exwm? - person Stefan Avey; 03.11.2020

coba ini:

X11()   #  starts a X11 graphics device
plot(c(1:10),c(1:10))
savePlot(filename = "try_save_X11.png",type = c("png"))
person Xun    schedule 31.01.2012

Ini tidak menjawab pertanyaan OP karena ini berada di luar ESS tetapi mungkin masih relevan bagi sebagian orang karena masih berkaitan dengan penggunaan R untuk menghasilkan grafik yang dapat dilihat di dalam Emacs.

Anda dapat melakukannya menggunakan Notebook Emacs iPython (ein). Anda harus menyiapkan Jupyter terlebih dahulu tetapi setelah itu cukup mudah dan dapat bekerja dengan kernel yang berbeda (R, Python, Julia , dll.). Di bawah ini adalah tangkapan layar

Tangkapan layar plot R di ein

person Stefan Avey    schedule 23.08.2018