P: como posso obter o ESS (R) para plotar diretamente em um buffer Emacs?
Ao interagir com o R através do ESS, o R padrão é gerar uma janela gráfica separada fora do Emacs para desenhar suas plotagens. (É claro que é possível escolher outros dispositivos gráficos, que é como plotamos para PDF etc.) Duas questões: primeiro, a nova janela rouba o foco do Emacs e, segundo, seria bom manter tudo limpo e arrumado dentro do ecossistema Emacs.
Então: existe alguma maneira de plotar "diretamente" (ou até indiretamente) para um buffer Emacs e, mais importante, fazê-lo sem muita intervenção manual do usuário?
Houve alguma discussão anterior nesse antigo thread Stack Overflow , mas as soluções parciais propostas não são ideais. Elas envolvem principalmente a alteração do dispositivo de plotagem em R (por exemplo, para PNG), plotagem para um arquivo temporário e, em seguida, a visita manual desse arquivo em um buffer do Emacs. Tudo isso me parece muito desajeitado, especialmente se o objetivo é usar a janela / buffer de plotagem interativamente e desenhar muitos gráficos em uma sessão (ou adicionar camadas a eles rapidamente).
Estou especulando aqui, mas me parece que, como o R e o Emacs suportam SVG, esse pode ser um formato útil a ser usado. No entanto, não está claro para mim se / como alguém poderia se conectar ao processo R para se comunicar em tempo real. Existe uma maneira de o R cuspir o código SVG diretamente no buffer do Emacs ou precisaria passar pelo intermediário de um arquivo temporário? Como convencer o Emacs a visitar um novo arquivo temporário automaticamente quando R o cria, ou atualizar um buffer de plotagem quando o arquivo temporário é atualizado / substituído por uma nova plotagem?
create-image
. Não posso ajudá-lo a realmente fazer o R e o Emacs se comunicarem para conseguir isso.Respostas:
Não é uma resposta completa para a pergunta, mas quando se usa R no babel do modo organizacional:
Fazer
C-c C-c
isso no modo organizacional criará um*my-R*
buffer com um buffer ESS interagindo, criará a plotagem noexample.svg
arquivo e você poderá clicar (ou pressionar enter) no link criado para o arquivo, que será aberto.O modo organizacional é capaz de inline a imagem, mas faz isso ao alternar essa funcionalidade (com
M-x org-toggle-inline-images
) ou ao abrir o arquivo, mas não ao executar um código nele.Portanto, essa não é uma solução completa.
fonte
(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)
, mas acho que ainda não é o que o OP queria.Acabei de publicar uma resposta para a postagem antiga a que você está se referindo na sua pergunta. Como escrevi lá, isso pode não funcionar para você, pois seria uma mudança bastante dramática no fluxo de trabalho geral do computador.
Mas o exwm , ao permitir que qualquer janela que não seja do emacs seja um buffer do emacs, permite ter gráficos R em buffers do emacs, que são controlados pelas configurações e combinações de teclas usuais do emacs.
Aqui está um exemplo de como isso se parece:
fonte