garden.matplotlib: AttributeError: 'FigureCanvasAgg' object has no attribute 'bind'

607 views
Skip to first unread message

David Aldrich

unread,
Nov 12, 2015, 5:02:22 AM11/12/15
to Kivy users support
Hi

I'm running Kivy Master with latest garden.matplotlib on Windows 8.1.

If I call:

plt.tight_layout()


I get exception:

 C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\matplotlib\tight_layout.py:225: UserWarning: tight_layout : falling back to Agg renderer
   warnings.warn("tight_layout : falling back to Agg renderer")
 Traceback (most recent call last):
   File "main.py", line 1117, in <module>
     GuiApp().run()
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\app.py", line 801, in run
     self.load_kv(filename=self.kv_file)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\app.py", line 598, in load_kv
     root = Builder.load_file(rfilename)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 1801, in load_file
     return self.load_string(data, **kwargs)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 1880, in load_string
     self._apply_rule(widget, parser.root, parser.root)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 2038, in _apply_rule
     self._apply_rule(child, crule, rootrule)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 2037, in _apply_rule
     self.apply(child)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 1924, in apply
     self._apply_rule(widget, rule, rule)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 2038, in _apply_rule
     self._apply_rule(child, crule, rootrule)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 2038, in _apply_rule
     self._apply_rule(child, crule, rootrule)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\lang.py", line 2035, in _apply_rule
     child = cls(__no_builder=True)
   File "C:\SVNProj\Raggio\trunk\hostconsole\gui\mygraph.py", line 127, in __init__
     self.create_plot()
   File "C:\SVNProj\Raggio\trunk\hostconsole\gui\mygraph.py", line 224, in create_plot
     self.add_widget(canvas)
   File "C:\Kivy-1.9.0-py3.4-win32-x64\Python34\lib\site-packages\kivy\uix\boxlayout.py", line 211, in add_widget
     widget.bind(
 AttributeError: 'FigureCanvasAgg' object has no attribute 'bind'

Any thoughts on how to fix this please?

Best regards

David

David Aldrich

unread,
Nov 17, 2015, 5:39:59 AM11/17/15
to Kivy users support
Fixed.  I was calling tight_layout before adding the canvas widget.  This order works ok:

        self.add_widget(canvas)

        self.fig.tight_layout()
        plt.show()

Reply all
Reply to author
Forward
0 new messages