Por que R está tendo problemas para renderizar gráficos em um arquivo PNG?

4

Estou tentando fazer com que o R faça uma plotagem muito básica e semelhante no UNIX, mas estou recebendo um erro estranho relacionado ao X11, quando, até onde eu sei, não estou precisando nem mesmo do X11.

Eu tenho um nome de matriz d e quero salvar uma imagem de um mapa de calor dessa matriz sem realmente exibir a imagem (já que não quero usar o X11). Aqui está o meu código:

png(file="my_image.png")
heatmap(d)
dev.off()

O problema é que estou recebendo o seguinte erro:

Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize,  :
  unable to start device PNG

Além disso: Mensagem de aviso:

In png(file = "interative_hen.png") :
  unable to open connection to X11 display ''

Eu não sei se isso está acontecendo, já que não vejo como o R está precisando do X11, e mesmo que isso aconteça, o X11 está instalado e funcionando corretamente para cada aplicativo com o qual testei.

    
por jake9115 04.06.2013 / 22:05

1 resposta

4

Primeiro, verifique se a versão de R que você está usando tem recursos de PNG. Você pode fazer isso chamando a função capabilities() de um prompt R . Deve imprimir uma lista semelhante a:

> capabilities()

jpeg    png    tiff    tcltk  X11    aqua     http/ftp  sockets
FALSE   FALSE  FALSE   TRUE   FALSE  FALSE    TRUE      TRUE

libxml  fifo   cledit  iconv  NLS    profmem  cairo
TRUE    TRUE   TRUE    TRUE   TRUE   FALSE    FALSE 

Se você vir FALSE em png , precisará recompilar manualmente R com suporte PNG explícito. Contanto que você tenha instalado as dependências de compilação necessárias, o processo de compilação deve habilitar automaticamente os recursos do PNG.

Por último, supondo que não exista nenhum servidor X local em execução no cluster, seu cliente SSH pode não estar configurado corretamente - especificamente, certifique-se de ter ativado o encaminhamento X11 (usando os sinalizadores -X ou -Y se você estiver usando um Ferramenta ssh semelhante a UNIX). Como alternativa, você pode tentar usar um framebuffer virtual.

Veja esta pergunta do Stack Overflow para mais detalhes: Como rodar o R em um servidor sem o X11, e evitar dependências quebradas .

    
por 05.06.2013 / 17:07