Warum hat R Probleme beim Rendern von Diagrammen in eine PNG-Datei?

Warum hat R Probleme beim Rendern von Diagrammen in eine PNG-Datei?

Ich versuche, mit R einige ganz einfache Plot-Aufgaben und ähnliches unter UNIX auszuführen, erhalte jedoch eine seltsame Fehlermeldung im Zusammenhang mit X11, obwohl ich, soweit ich weiß, X11 gar nicht benötige.

Ich habe einen Matrixnamen dund möchte ein Bild einer Heatmap dieser Matrix speichern, ohne das Bild jemals tatsächlich anzuzeigen (da ich X11 nicht verwenden möchte). Hier ist mein Code:

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

Das Problem ist, dass ich die folgende Fehlermeldung erhalte:

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

Zusätzlich: Warnmeldung:

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

Ich weiß nicht, ob das passiert, da ich nicht sehe, warum R X11 benötigt, und selbst wenn, ist X11 installiert und funktioniert ordnungsgemäß für jede Anwendung, mit der ich es getestet habe.

Antwort1

Überprüfen Sie zunächst, ob die von RIhnen verwendete Version PNG-fähig ist. Sie können dies tun, indem Sie die capabilities()Funktion von einer REingabeaufforderung aus aufrufen. Sie sollte eine Liste ähnlich der folgenden ausgeben:

> 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 

Wenn Sie FALSEunter sehen png, müssen Sie manuell Rmit expliziter PNG-Unterstützung neu kompilieren. Sofern Sie die erforderlichen Build-Abhängigkeiten installiert haben, sollte der Build-Prozess PNG-Funktionen automatisch aktivieren.


Und schließlich: Vorausgesetzt, auf dem Cluster läuft kein lokaler X-Server, ist Ihr SSH-Client möglicherweise nicht richtig konfiguriert. Stellen Sie insbesondere sicher, dass Sie die X11-Weiterleitung aktiviert haben (mit den Flags -Xoder -Y, wenn Sie ein UNIX-ähnliches Tool verwenden ssh). Alternativ können Sie versuchen, einen virtuellen Framebuffer zu verwenden.

Weitere Einzelheiten finden Sie in dieser Stack Overflow-Frage:So führen Sie R auf einem Server ohne X11 aus und vermeiden fehlerhafte Abhängigkeiten.

verwandte Informationen