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.

  • Python: Sagen Sie X, um Bildschirm Platz für die Anwendung zu reservieren
  • Ermittlung des Pfades zur aktuellen Tapete mit pygtk (vielleicht X11?)
  • Warum gibt es bei glXGetVisualFromFBConfig immer ein gültiges Visual aus meiner FBConfig?
  • Warum XGrabKey extra Fokus- und Fokus-Events generiert?
  • Python DBUS SESSION_BUS - X11 Abhängigkeit
  • X11 Weiterleitung mit paramiko
  • Wie kann ich die Tastatur sperren, um zu verhindern, dass weitere Tastendrücke auf X11 / Linux / Gnome gesendet werden?
  • Wie erkenne ich die aktuell fokussierte Anwendung?
  • 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.