Графики, сделанные с использованием rpy, отправленные на X11, внезапно закрываются?
Вопрос
Я использую RPy2 для создания некоторых графиков.График отображается, но окно X11 немедленно исчезает.
Все, что я печатаю, - это следующее, где CCFS представляет собой матрицу данных
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.
Я что-то упускаю из виду?Я знаю, что есть что-то для построения графика, потому что princomp возвращает ListVector, который не равен null.
Решение
Добавить
input() # for Python3
# raw_input() # for Python2
.
к концу скрипта, чтобы предотвратить окончание программы, пока пользователь не нажимает ввод.
Другие советы
Как указал на это Зак, позвонив dev.off()
на интерактивных графических устройствах это просто приведет к закрытию устройства (и исчезновению того, что оно отображает).С другой стороны, в основном требуется закрыть неинтерактивные устройства, прежде чем можно будет проверить график (см. документация rpy2 по графическим устройствам).
Я предполагаю, что ваш код на Python вызывается как отдельная программа / скрипт, а не как часть интерактивного сеанса на Python.Другими словами, я подозреваю, что у вас происходит что-то вроде python myscript.py
в оболочке (содержимое myscript.py
являющийся вашим кодом выше);когда сценарий завершается, встроенный R, очевидно, завершается, забирая с собой интерактивный сюжет.Вероятно, это тоже то, о чем думает Зак.Попробуй python -i myscript.py
, а затем один раз в консоли Python import sys; sys.exit(0)
чтобы увидеть, что выход из Python означает закрытие R interactive devices.