2017-01-31 2 views
0

Этот код подключается к MySQL и извлекает набор данных, который я читаю с помощью pandas. Когда набор данных находится в кадре данных pandas, мне нужно его построить. Но это вызывает ошибку. Вот Snipper

#!/usr/bin/python 

import MySQLdb as mdb 
import pandas as pd 
import matplotlib.pyplot as plt 

con = mdb.connect('hostname', 'username', 'password', 'database'); 

with con: 
    cur = con.cursor() 
    cur.execute("select month, post, comment, reply, dm, review") 
    rows = cur.fetchall() 
    df = pd.DataFrame([[ij for ij in i] for i in rows]) 
    df.rename(columns={0: 'Month', 1: 'Post', 2: 'Comment', 3: 'Reply', 4: 'DM', 5: 'Review'}, inplace=True); 
    print(df.head(20)) 

df=df.set_index('Month') 
df=df.astype(float) 
df.plot(subplots=True) 
plt.show() 

Traceback (most recent call last): 
    File "random-exmaple.py", line 7, in <module> 
    plt.plot(x, y, "o") 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3307, in plot 
    ax = gca() 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 950, in gca 
    return gcf().gca(**kwargs) 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 586, in gcf 
    return figure() 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 535, in figure 
    **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager 
    return new_figure_manager_given_figure(num, figure) 
    File "/usr/local/lib/python2.7/site- 

packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure 
    window = Tk.Tk() 
    File "/usr/local/lib/python2.7/lib-tk/Tkinter.py", line 1745, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: no display name and no $DISPLAY environment variable 

Как это исправить?

Извините за дубликатом - Issue with tkinter, python and seaborn: _tkinter.TclError: no display name and no $DISPLAY environment variable

+0

Вы пытаетесь запустить этот код локально или на удаленном компьютере через ssh? –

+0

@EduardIlyasov - удаленная машина через ssh. – MontyPython

ответ

0

Этот вид ошибки появляется при попытке запустить GUI приложения или сюжет что-то на удаленном компьютере, который не подключен устройство отображения. В этом случае вы можете сохранить свои участки на удаленных компьютерах и скопировать их на локальный компьютер с помощью scp. Вы можете сделать это следующим образом:

Сохранить участки:

ax = df.plot(subplots=True) 
fig = ax.get_figure() 
fig.savefig('plots_name.png') 

Копирование изображений с удаленной машины в локальный каталог:

scp {remote_username}@{remote_host}:{path_to_image} {path_to_local_directory} 

где {remote_host} является IP-адрес или доменное имя, которое вы пытаетесь для подключения к {remote_user} - ваше имя пользователя на удаленной машине, {path_to_image} - путь на удаленном компьютере к изображению, которое вы хотите скопировать (используйте команду pwd, чтобы найти ее) и {path_to_local_directory} - это путь к локальному указателю tory, где вы хотите, чтобы ваш сюжет появлялся.

EDIT:

Для новичков. Это более сложное решение. Автор этого вопроса дал простое решение для решения этой проблемы. Проверьте это: Issue with tkinter, python and seaborn: _tkinter.TclError: no display name and no $DISPLAY environment variable

Смежные вопросы