Как сохранить фигуру удаленно с помощью pylab? [дубликат]


этот вопрос уже есть ответ здесь:

Я пытаюсь создать фигуру на удаленном компьютере с помощью команды pylab.savefig. Но я получил такую ошибку:

Unable to access the X Display, is $DISPLAY set properly?

Как я могу сохранить фигуру, правильно?

2 64

2 ответа:

по умолчанию matplotlib будет использовать что-то вроде TkAgg бэкэнд. Для этого требуется X-сервер для работы.

хотя вы можете просто использовать X-переадресацию, будет заметное отставание, поскольку matplotlib пытается подключиться к удаленному X-серверу. Если вам не нужно взаимодействовать с сюжетом, часто лучше ускорить процесс, полностью избегая X-соединения.

если вы хотите сделать сюжет без необходимости X-сервера вообще, используйте Agg backend вместо.

например, сделать что-то вроде этого:

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 бэкэнд по умолчанию.

посмотреть эта статья для получения дополнительной информации.

Умм, установите переменную дисплея правильно?

графика по сети с помощью X11 работает на клиентском (удаленном) компьютере, имеющем переменную среды отображения, которая говорит, где рисовать графику. Обычно это будет что - то вроде mydesktop.example.com:0.0-затем, когда программа X11 пытается что-то нарисовать, она получает свист по сети, чтобы mydesktop.example.com, это машина, перед которой вы сидите (X-сервер), и она появляется.

теперь, если машина перед вами-Windows, тогда вам нужно будет где - то получить X-сервер-cygwin/X11 или commercial eXceed будет хорошо.

вы также должны убедиться, что безопасность обрабатывается - вы не можете просто иметь кто-то пишет на ваш экран по сети.

Как вы подключаетесь к удаленной машине? Потому что если вы идете от коробки Linux к другой коробке Linux с ssh, то простое решение, вероятно, "использовать ssh-X foo.example.com' для подключения-это трубы соединение X11 через локальный сокет.

Итак, если ssh-X не является ответом, можем ли мы получить дополнительную информацию о задействованных операционных системах?