Kivy and GSOC 2015

Sun 30 August 2015

Kivy had 2 successful GSOC projects this year! Andrés Vargas has been working on matplotlib support, something that we think will be a huge step towards making Kivy more accessible to the scientific community, and Aron Bordin has been working on improving Kivy Designer, which is the third year a student has contributed to the project as part of GSOC. A huge thank you to all our mentors and students for making 2015 another successful summer.

A brief introduction to both projects follows, if you have any issues with either project please report them on the github pages for the project.


gif of kivy mpl


The matplotlib integration has been added to the Kivy garden, to install it you should run ‘garden install matplotlib’, it allows you to create applications using pyplot instructions or to embed figures into a kivy application. There are two possible backends that can be used:

  • backend_kivy which does the rendering using kivy graphics instructions.
  • backend_kivyagg which does the rendering using an static image texture.

A couple of warnings as this library is still only a few months old:

  • If you are using dash_list attribute when creating a figure, it will not work until the update is done in the next kivy version.
  • The backend only works with the kivy >= 1.9.1. Some changes were done in the Widget class.

Both of the backends can be connected to the default matplotlib events. Additionally another widget called NavigationToolbar can be instantiated and used with both backends, a better description can be found here

There are some features that were not implemented and the users should be aware of:

  • backend_kivy and backend_kivyagg are non interactive backends
  • gouraud shading in backend_kivy
  • configure_subplots button in the NavigationToolbar is not implemented.

Known bugs:

  • When zooming on an area with not enough graphics instructions the render is not properly done. Github Issue

There are some features implemented in backend_kivy and backend_kivyagg that are not implemented in other matplotlib graphics instructions based backends.

  • clip path when rendering an image.
  • draw_path_collection method for optimization.
  • draw_markers for optimization.

We believe most of matplotlib’s current capabilities have been implemented in our backends; however, we encourage you to submit issues for any capabilities that are missing.


gif of kivy-designer


Kivy-Designer is a project to create a GUI editor for the creation of Kivy UIs. It has been a largely student driven affair with Aron being the third year that a student has chosen to work on this project. He has made a huge number of improvements to various areas of kivy-designer, including but not limited to:

  • Jedi integration
  • Buildozer integration
  • Improvements to the Kivy Console
  • Integrating automated bug reporting

For an exhaustive list of his bug fixes and other changes you can see branch comparison here