Я пытаюсь создать цифру на удаленном компьютере с командой pylab.savefig
. Но я получил такую ошибку:Как сохранить фигуру удаленно с pylab?
Unable to access the X Display, is $DISPLAY set properly?
Как сохранить фигуру правильно?
Я пытаюсь создать цифру на удаленном компьютере с командой pylab.savefig
. Но я получил такую ошибку:Как сохранить фигуру удаленно с pylab?
Unable to access the X Display, is $DISPLAY set properly?
Как сохранить фигуру правильно?
По умолчанию matplotlib будет использовать что-то вроде фона TkAgg
. Для этого требуется запуск X-сервера.
Хотя вы можете просто использовать X-пересылку, будет заметный лаг, поскольку matplotlib пытается подключиться к удаленному X-серверу. Если вам не нужно взаимодействовать с сюжетом, часто бывает лучше ускорить процесс, полностью избегая X-соединения.
Если вы хотите сделать участок без X-сервера вообще, используйте вместо этого Agg
backend.
E.g. сделать что-то вроде этого:
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png')
Если вы хотите, чтобы это поведение по умолчанию, вы можете изменить ваш matplotlibrc file использовать Agg
бэкенд по умолчанию.
У меня была такая же проблема с gerry. Для меня одного трюка Джо недостаточно, мне также нужно было сделать ssh -X nos @ server.com, а не просто ssh – nos
Большое спасибо. Это решение более понятно, чем любое другое решение .... – upendra
Здравствуйте, Джо, у меня возникли вопросы, которые я задал. Мне нужна экспертная консультация, как вы, пожалуйста, посмотрите http://stackoverflow.com/questions/36248016/how-to-get-more-information-in-2nd-plot-by-clicking-1st-plot-using-python -clicki –
Умм, правильно ли задайте переменную DISPLAY?
Графика через сеть с использованием X11 работает на клиентском (удаленном) компьютере с переменной окружения DISPLAY, в которой говорится, где рисовать графику. Как правило, это будет что-то вроде mydesktop.example.com:0.0 - тогда, когда программа X11 пытается что-то нарисовать, она получает свист по сети на mydesktop.example.com, который является машиной, в которой вы сидите перед (X сервер) и до него всплывает.
Теперь, если машина перед вами - это Windows, вам нужно будет получить X-сервер откуда-то - cygwin/X11 или коммерческий eXceed будет хорошо.
Вам также необходимо убедиться, что безопасность обработана - вы не можете просто написать кому-либо на свой экран по сети.
Как вы подключаетесь к удаленной машине? Поскольку, если вы переходите из Linux-коробки в другой Linux-блок с помощью ssh, то простым решением является, вероятно, «Использовать ssh -X foo.example.com» для подключения - это соединение X11 через локальный сокет.
Итак, если ssh -X не является ответом, можем ли мы получить дополнительную информацию об используемых операционных системах?
Спасибо за ваше объяснение. Я ssh Linux-машина под окнами. Можно ли сделать фигуру без X11? – gerry
Не так, чтобы он отображался на экране - вам нужно было бы написать pylab в файл, а затем скопировать этот файл в окно Windows. Может быть, дайте http://winswitch.org/ a go - это простой интерфейс для фантазии кросс-платформенной графики. – Spacedman
Я сделал «ssh -X имя_пользователя @ servername» из моего linux box в другой linux box, и он сработал –
http://www.stackoverflow.com/questions/2801882/generating-a-png-with-matplotlib-when-display-is-undefined?lq=1 –