2014-01-07 5 views
2

Я пытаюсь построить простую функцию в Python. Я использую следующий код:Ошибка атрибута при использовании простого сценария построения графика

# lineplot.py 
import numpy as np 
import pylab as pl 
# Make an array of x values 
x = [1, 2, 3, 4, 5] 
# Make an array of y values for each x value 
y = [1, 4, 9, 16, 25] 
# use pylab to plot x and y 
pl.plot(x, y) 
# show the plot on the screen 
pl.show() 

Однако, последняя строка, в которой я хочу видеть выходные результатов в следующей ошибке:

AttributeError: 'NoneType' object has no attribute 'get_default_size' 

Кто-нибудь есть идеи, где я собираюсь неправильно ?

Полный отслеживающий ошибки:

>>> pl.show() 
Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 394,\ in expose_event 
    self._render_figure(self._pixmap, w, h) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 75, in _render_figure 
    FigureCanvasAgg.draw(self) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 394, in draw 
    self.figure.draw(self.renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/figure.py", line 798, in draw 
    func(*args) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 1946, in draw 
    a.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 1017, in draw 
    tick.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 234, in draw 
    self.label1.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 526, in draw 
    bbox, info = self._get_layout(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 300, in _get_layout 
    ismath=False) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 180, in get_text_width_height_descent 
    font = self._get_agg_font(prop) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 226, in _get_agg_font 
    size = prop.get_size_in_points() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/font_manager.py", line 798, in get_size_in_points 
    default_size = fontManager.get_default_size() 
    AttributeError: 'NoneType' object has no attribute 'get_default_size' 
    Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 394, in expose_event 
    self._render_figure(self._pixmap, w, h) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 75, in _render_figure 
    FigureCanvasAgg.draw(self) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 394, in draw 
    self.figure.draw(self.renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/figure.py", line 798, in draw 
    func(*args) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 1946, in draw 
    a.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 1017, in draw 
    tick.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 234, in draw 
    self.label1.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 526, in draw 
    bbox, info = self._get_layout(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 300, in _get_layout 
    ismath=False) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 180, in get_text_width_height_descent 
    font = self._get_agg_font(prop) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 226, in _get_agg_font 
    size = prop.get_size_in_points() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/font_manager.py", line 798, in get_size_in_points 
    default_size = fontManager.get_default_size() 
    AttributeError: 'NoneType' object has no attribute 'get_default_size' 
    Traceback (most recent call last): 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 394, in expose_event 
    self._render_figure(self._pixmap, w, h) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 75, in _render_figure 
    FigureCanvasAgg.draw(self) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 394, in draw 
    self.figure.draw(self.renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/figure.py", line 798, in draw 
    func(*args) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axes.py", line 1946, in draw 
    a.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 1017, in draw 
    tick.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/axis.py", line 234, in draw 
    self.label1.draw(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/artist.py", line 55, in draw_wrapper 
    draw(artist, renderer, *args, **kwargs) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 526, in draw 
    bbox, info = self._get_layout(renderer) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/text.py", line 300, in _get_layout 
    ismath=False) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 180, in get_text_width_height_descent 
    font = self._get_agg_font(prop) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 226, in _get_agg_font 
    size = prop.get_size_in_points() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/font_manager.py", line 798, in get_size_in_points 
    default_size = fontManager.get_default_size() 
    AttributeError: 'NoneType' object has no attribute 'get_default_size' 
+0

Какую версию python и matplotlib вы используете? В этом случае код прошел отлично, так что может быть что-то еще не так. – M4rtini

+0

Можете ли вы попробовать использовать matplotlib напрямую, а не проходить через pylab? т.е. импортировать matplotlib.pyplot как pl' вместо 'import pylab as pl'? –

+0

@ M4rtini Я бы сказал, что это мой бэкэнд или какое-то устройство, которое я использую для построения внутри. Версия python - 2,7. Matplotlib - версия 1.0.1 – stars83clouds

ответ

2

Проблема была версия (1.0.1) из matplotlib, используемого ОР. Модернизация этой проблемы решила проблему (как выяснилось в чате в чате).

Это, как мы решили эту проблему (она должна работать на Linux):

  1. Загрузить последнюю matplotlib деготь файл из download page
  2. Распакуйте архив tar.gz
  3. компакт-диск в Matplotlib каталог
  4. запустить

    python setup.py build 
    

    Если он не может подать жалобу на какой-либо файл заголовка (например, png.h) установите соответствующие пакеты -devel из системного репозитория. Наверняка python-devel и libpng12-devel необходимы

  5. запустить

    python setup.py install --user 
    

    Это установит Matplotlib в $HOME/.local/lib/pythonX.X/site-packages. Этот каталог загружается в путь python до любого из системных. Кроме того, нет никаких рисков, связанных с запуском системных систем.

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