หน้าต่างป๊อปอัปใน R & Emacs

ฉันใช้ ESS เพื่อให้อยู่ใน Emacs เมื่อทำงานกับ R เมื่อใดก็ตามที่ฉันสร้างโครงเรื่อง ป๊อปอัปใหม่จะปรากฏขึ้นพร้อมกับกราฟ หน้าต่างใหม่นี้ดูเหมือนจะเป็นส่วนหนึ่งของกระบวนการ R ที่เรียกว่าภายใน Emacs ด้วยเหตุนี้หน้าต่างใหม่จึงไม่ได้เป็นส่วนหนึ่งของรายการบัฟเฟอร์และดูเหมือนว่าจะอยู่นอกสภาพแวดล้อมของ Emacs

หน้าต่างใหม่ที่สร้างโดย R อาจมีเช่น กราฟที่ถูกเรียกโดย plot() หรือฟังก์ชันที่เกี่ยวข้องใน ggplot2/lattice ถูกบังคับให้อยู่ในสภาพแวดล้อม Emacs หรือไม่ เพื่อให้พล็อตพร้อมใช้งานเป็นบัฟเฟอร์ใหม่

ขอบคุณ!


person mropa    schedule 19.02.2011    source แหล่งที่มา


คำตอบ (5)


ไม่ ขอโทษ มันทำไม่ได้ บัฟเฟอร์ Emacs เป็นข้อความ หน้าต่างกราฟิกเป็นอุปกรณ์กราฟิก

แต่คุณสามารถทำได้ด้วยตัวเอง ก่อนที่จะวางแผนหรือแม้กระทั่งตอนเริ่มเซสชั่น ให้พูด

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

และตอนนี้แผนการจะไปที่นั่น จากนั้นคุณก็สามารถเปิดไฟล์ pdf ใน Emacs ได้ และเวอร์ชันล่าสุดจะมีการแสดงตัวอย่าง PDF ภายใน Emacs (อย่างน้อยบน Linux boxen ของฉัน ไม่แน่ใจว่าฉันต้องการโหมดเพิ่มเติมสำหรับสิ่งนั้นหรือไม่) นั่นจะใกล้เคียงกับความต้องการของคุณ

person Dirk Eddelbuettel    schedule 19.02.2011
comment
โอเค นั่นจะเป็นความคิด แต่ฉันต้องเรียก 'dev.off()' ทุกครั้งที่ฉันเรียกใช้ฟังก์ชันการวางแผนและเริ่มฟังก์ชัน 'pdf()' ใหม่ก่อนที่ฉันจะสร้างพล็อตใหม่หรืออัปเดตอันเก่า - person mropa; 19.02.2011
comment
คุณสามารถเพิ่มหลายแปลงลงในไฟล์เดียวกันได้ ดูที่ help(pdf) และตัวเลือก onefile แต่คุณอาจต้องโทร dev.off() เพื่อซิงโครไนซ์ / ล้างบัฟเฟอร์ไฟล์ แต่นั่นอาจเป็นราคาที่คุณต้องจ่ายสำหรับรูปแบบการใช้งานที่ค่อนข้างไม่ธรรมดา - person Dirk Eddelbuettel; 20.02.2011
comment
ฉันใช้โหมด DocView ใน Emacs เมื่อโหลด pdf การอัปเดตอัตโนมัติไม่ได้ทำงานได้อย่างราบรื่น ดังนั้นเมื่อฉันเรียก 'plot()' สองครั้ง บัฟเฟอร์ที่มีไฟล์ pdf จะบันทึกข้อผิดพลาด หลังจากเรียก 'dev.off' แล้วบัฟเฟอร์จะได้รับการอัปเดตและฉันเห็นทั้งสองแปลง อืม....โอเค งั้นผมก็คงคงอยู่ในบรรยากาศเดิมๆ แต่ขอบคุณเดิร์กสำหรับข้อมูล - person mropa; 20.02.2011
comment
คุณยังสามารถใช้ png(...) เพื่อให้ Emacs ไม่ต้องใช้ Ghostscript เพื่อแปลง PDF เป็น PNG น่าเสียดายที่โหมดเปลี่ยนกลับอัตโนมัติดูเหมือนว่าจะทำงานไม่ถูกต้องเลย แม้ว่า M-x revert-buffer ปกติจะทำงานก็ตาม - person Nicholas Riley; 20.02.2011

เออ ทำได้...

ใน ESS ให้ทำสิ่งนี้:

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

ไม่มีอะไร. ตอนนี้ทำโหมด ESC X iimage (ใช่สองอันอยู่ที่นั่น)

ซึ่งจะทำให้บัฟเฟอร์ของคุณเข้าสู่โหมด iimage minor โดยควรระบุ [[tmp.png]] และโหลดรูปภาพของคุณไปที่นั่น สิ่งนี้ควรจะเป็นอัตโนมัติได้อย่างง่ายดาย นี่เป็นครั้งแรกที่ฉันค้นพบสิ่งนี้ด้วยตัวเอง ดังนั้นจึงอาจมีวิธีที่ดีกว่านี้

มีการพูดคุยกันอย่างชัดเจนในรายการ ESS เกี่ยวกับเรื่องนี้:

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

แต่ฉันแปลกใจที่มันยังไม่ได้อยู่ในคอร์ ESS...

person Spacedman    schedule 19.02.2011
comment
นั่นเหมือนกับคำตอบก่อนหน้าของฉันไม่มากก็น้อยและไม่ใช่สิ่งที่ OP ขอ เขาต้องการบัฟเฟอร์ emacs เป็นอุปกรณ์กราฟิก R ดั้งเดิม อันไหนจะต้องใส่รหัส - person Dirk Eddelbuettel; 20.02.2011
comment
อืม ใช่ ในฐานะบัฟเฟอร์ใหม่... น่าเศร้า ฉันไม่คิดว่าคุณจะสามารถเขียนไดรเวอร์กราฟิกด้วย Pure R ได้ในขณะนี้ ซึ่งจะทำให้การดำเนินการนี้ง่ายขึ้นมาก... - person Spacedman; 20.02.2011
comment
omegahat.org/RGraphicsDevice/overview.html ดูเหมือนวันนี้ฉันจะเข้าใจผิดเต็มๆ .. - person Spacedman; 20.02.2011

นี่ไม่น่าจะเป็นโซลูชันที่คุณกำลังมองหาเนื่องจากเกี่ยวข้องกับการเปลี่ยน Emacs เป็นตัวจัดการหน้าต่าง (ใช้ได้กับ Linux และ MacOS): แพ็คเกจ EXWM (Emacs X Window Manager) เป็นตัวจัดการหน้าต่างเรียงต่อกันที่มีคุณสมบัติครบถ้วนที่จะเปลี่ยนหน้าต่าง ทั้งหมด X ให้เป็นบัฟเฟอร์ของ Emacs

นี่คือตัวอย่างของสิ่งที่จะมีลักษณะเช่นนี้ (สังเกตหน้าต่าง R Graphics ทางด้านขวาซึ่งตอนนี้เป็นบัฟเฟอร์ของ Emacs):

ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งจะทำให้คุณสามารถใช้การผูกคีย์ การกำหนดค่า ฯลฯ ของ Emacs กับหน้าต่าง X ทั้งหมดได้

person prosoitos    schedule 08.07.2018
comment
นี่เป็นสิ่งที่ดีมาก คุณช่วยกรุณาให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการตั้งค่านี้ให้ทำงานอย่างถูกต้องหลังจากติดตั้ง exwm ได้ไหม - person Stefan Avey; 03.11.2020

ลองสิ่งนี้:

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

สิ่งนี้ไม่ได้ตอบคำถามของ OP อย่างแน่นอน เนื่องจากสิ่งนี้ไปนอก ESS แต่ก็ยังอาจเกี่ยวข้องกับบางส่วน เนื่องจากยังคงเกี่ยวข้องกับการใช้ R เพื่อสร้างกราฟิกที่สามารถดูได้ภายใน Emacs

คุณสามารถทำได้โดยใช้ Emacs iPython Notebook (ein) คุณต้องตั้งค่า Jupyter ก่อน แต่หลังจากนั้นก็ค่อนข้างตรงไปตรงมาและสามารถทำงานกับเคอร์เนลที่แตกต่างกันได้ (R, Python, Julia ฯลฯ) ด้านล่างเป็นภาพหน้าจอ

สกรีนช็อตของพล็อต R ใน ein

person Stefan Avey    schedule 23.08.2018