Używam RPY2, aby zrobić kilka działek. Wykres pojawia się, ale okno X11 natychmiast znika.

Wszystko, co wpisuję, jest następujący, w którym CCFS jest matrycą danych

 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.

Czy nie zawracam czegoś? Wiem, że jest coś dla fabuły, ponieważ Princomp zwraca listwowy, który nie jest NULL.

1
mac389 29 wrzesień 2012, 23:27

2 odpowiedzi

Najlepsza odpowiedź

Dodaj

input()         # for Python3
# raw_input()   # for Python2

Do końca skryptu, aby zapobiec zakończeniu programu, dopóki nie prasuje użytkownika.

4
unutbu 16 luty 2019, 16:20

Jak zauważył go wywołanie {X0}} na interaktywnych urządzeń graficznych spowoduje, że urządzenie zostanie zamknięte (i co wyświetla się zniknąć). Z drugiej strony, zamykanie nieinteraktywnych urządzeń jest w większości wymagane przed sprawdzeniem działki (patrz Dokumentacja RPY2 na urządzeniach graficznych).

Zgaduję, że Twój kod Pythona jest wywoływany jako samodzielny program / skrypt, a nie część interaktywnej sesji Python. Innymi słowy, podejrzewam, że masz coś takiego jak python myscript.py w skorupce (zawartość myscript.py jest twoim kodem powyżej); Gdy skrypt kończy się osadzony r jest oczywiście zakończony, biorąc go z nim działek interaktywny. Jest to prawdopodobne, co myśli Zack. Wypróbuj python -i myscript.py, a następnie raz w konsoli Python import sys; sys.exit(0), aby zobaczyć, że Exiting Python oznacza zamykanie urządzeń interaktywnych.

3
lgautier 29 wrzesień 2012, 20:19