Plots mit rpy geschickt an X11 plötzlich schließen?

Ich benutze RPy2, um einige Plots zu machen. Die Handlung zeigt sich, aber das X11-Fenster verschwindet sofort.

Alles, was ich tippe, ist das folgende, wo CCFS eine Datenmatrix ist

import rpy2.robjects as robjects r = robjects.r pca = r.princomp(CCFS) r.plot(pca,main="Eigenvalues") r.biplot(pca,main="biplot") r['dev.off']() #*EDIT* the problem persists even if I remove this line. 

Bin ich es nicht, etwas einzuschließen? Ich weiß, dass es etwas zu zeichnen gibt, weil prinzip einen ListVector zurückgibt, der nicht null ist.

  • Wie man alle Integer in der Liste vermehrt
  • Pythonlistenmultiplikation: [[...]] * 3 macht 3 Listen, die sich gegenseitig spiegeln, wenn sie modifiziert werden [duplizieren]
  • Wie kann ich alle Artikel in einer Liste zusammen mit Python multiplizieren?
  • 2 Solutions collect form web for “Plots mit rpy geschickt an X11 plötzlich schließen?”

    Hinzufügen

     raw_input() 

    Bis zum Ende des Skripts, um zu verhindern, dass das Programm beendet wird, bis der Benutzer Enter drückt.

    Wie Zack darauf hingewiesen hat, dass es sich bei der dev.off() auf interaktiven grafischen Geräten handelt, wird das Gerät nur zum Schließen (und was es angezeigt wird zu verschwinden). Auf der anderen Seite ist das Schließen von nicht interaktiven Geräten meist erforderlich, bevor das Diagramm überprüft werden kann (siehe rpy2's Dokumentation zu grafischen Geräten ).

    Ich vermute, dass Ihr Python-Code als eigenständiges Programm / Skript anstatt Teil einer interaktiven Python-Sitzung aufgerufen wird. Mit anderen Worten, ich python myscript.py dass Sie etwas wie python myscript.py in einer Shell haben (der Inhalt von myscript.py ist Ihr Code oben); Wenn das Skript endet, ist das eingebettete R offensichtlich beendet und nimmt dabei das interaktive Plot auf. Das ist wahrscheinlich auch was Zack denkt. Versuche python -i myscript.py , und dann einmal in der Python-Konsole import sys; sys.exit(0) import sys; sys.exit(0) zu sehen, dass das Verlassen von Python das Schließen von R interaktiven Geräten bedeutet.

    Python ist die beste Programmiersprache der Welt.