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

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

Estou tentando fazer com que R faça algumas plotagens muito básicas e coisas assim no UNIX, mas estou recebendo um erro estranho relacionado ao X11, quando, pelo que posso dizer, nem estou precisando do X11.

Eu tenho um nome de matriz de quero salvar uma imagem de um mapa de calor dessa matriz sem nunca 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 ''

Não sei se isso está acontecendo, pois não vejo como o R está precisando do X11 e, mesmo que precise, o X11 está instalado e funcionando corretamente para todos os aplicativos com os quais testei.

Responder1

Primeiro, verifique se a versão que Rvocê está usando possui recursos de PNG. Você pode fazer isso chamando a capabilities()função em um Rprompt. 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 FALSEabaixo png, será necessário recompilar manualmente Rcom suporte PNG explícito. Contanto que você tenha instalado as dependências de compilação necessárias, o processo de compilação deverá ativar automaticamente os recursos do PNG.


Por último, supondo que não haja nenhum servidor X local em execução no cluster, seu cliente SSH pode não estar configurado corretamente - especificamente, certifique-se de ter habilitado o encaminhamento X11 (usando os sinalizadores -Xou -Yse estiver usando uma sshferramenta semelhante ao UNIX). Alternativamente, você pode tentar usar um framebuffer virtual.

Consulte esta pergunta do Stack Overflow para obter detalhes:Como executar R em um servidor sem X11 e evitar dependências quebradas.

informação relacionada