Всплывающие окна в R & Emacs - PullRequest
       20

Всплывающие окна в R & Emacs

8 голосов
/ 19 февраля 2011

Я использую ESS, чтобы оставаться в Emacs при работе с R. Каждый раз, когда я создаю график, появляется новое всплывающее окно с графиком.Это новое окно, кажется, является частью процесса R, вызываемого внутри Emacs.Таким образом, новое окно не является частью списка буферов и, похоже, находится вне среды Emacs.

Может ли новое окно, созданное R, содержащее, например, графики, вызываемые plot (), или соответствующие функции в ggplot2 / lattice, оставаться в среде Emacs?Так что график доступен как новый буфер.

Спасибо!

Ответы [ 5 ]

9 голосов
/ 20 февраля 2011

О, да, это возможно ...

В ESS сделайте следующее:

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

Ничего.Теперь выполните ESC X iimage-mode (да, два я там).

Это переводит ваш буфер в второстепенный режим iimage, он должен обнаружить [[tmp.png]] и загрузить туда ваше изображение.Это должно быть легко автоматизируемым.Это первый раз, когда я обнаружил это для себя, так что, возможно, есть лучшие способы сделать это.

В списке ESS явно была какая-то болтовня об этом:

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

но я удивлен, что его еще нет в ядре ESS ...

3 голосов
/ 19 февраля 2011

Нет, извините, не может.Emacs буферы текстовые.Графические окна - это графические устройства.

Но вы можете сделать это самостоятельно.Перед построением графика или даже в начале сеанса произнесите

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

, и теперь графики будут идти туда.Затем вы можете открыть файл PDF в Emacs, и последние версии включают предварительный просмотр PDF в Emacs (по крайней мере, на моем Linux boxen, не уверен, что мне нужны дополнительные режимы для этого).Это будет близко к вашим требованиям.

0 голосов
/ 23 августа 2018

Это не совсем отвечает на вопрос OP, потому что это выходит за пределы ESS, но все еще может иметь отношение к некоторым, потому что оно все еще связано с использованием R для генерации графики, которую можно просматривать внутри Emacs.

Вы можете сделать это, используя Emacs iPython Notebook (ein). Сначала вы должны настроить Jupyter , но после этого все довольно просто и может работать с разными ядрами (R, Python, Julia и т. Д.). Ниже скриншот

Screenshot of R plot in ein

0 голосов
/ 09 июля 2018

Это решение довольно драматично и может не сработать для вас, поскольку оно повлияет на ваш рабочий процесс вне ESS. Но exwm - это менеджер окон X в emacs, который позволяет вам использовать ваши не-emacs окна в качестве буферов emacs. Это позволит вам использовать ваши R-графики в качестве буферов Emacs, полностью управляемых обычным окном Emacs и привязками клавиш буфера.

Вот очень простой пример, чтобы показать, как это будет выглядеть:

enter image description here

0 голосов
/ 31 января 2012

попробуйте это:

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