diff --git a/INSTALL b/INSTALL
index b5c71e2e6039..f76e4a516326 100644
--- a/INSTALL
+++ b/INSTALL
@@ -234,8 +234,11 @@ matplotlib with a user interface toolkit. See
:ref:`what-is-a-backend` for more details on the optional matplotlib
backends and the capabilities they provide.
-:term:`tk` 8.3 or later
- The TCL/Tk widgets library used by the TkAgg backend
+:term:`tk` 8.3 or later, not 8.6.0 or 8.6.1
+ The TCL/Tk widgets library used by the TkAgg backend.
+
+ Versions 8.6.0 and 8.6.1 are known to have issues that may result
+ in segfaults when closing multiple windows in the wrong order.
:term:`pyqt` 4.0 or later
The Qt4 widgets library python wrappers for the Qt4Agg backend
diff --git a/doc/_static/boxplot_explanation.png b/doc/_static/boxplot_explanation.png
index dd2656a607ed..d057496e4e44 100644
Binary files a/doc/_static/boxplot_explanation.png and b/doc/_static/boxplot_explanation.png differ
diff --git a/doc/_static/numfocus_badge.png b/doc/_static/numfocus_badge.png
new file mode 100644
index 000000000000..b8d8e6ca838f
Binary files /dev/null and b/doc/_static/numfocus_badge.png differ
diff --git a/doc/_templates/index.html b/doc/_templates/index.html
index 341bba6b96c0..c5d133f79470 100644
--- a/doc/_templates/index.html
+++ b/doc/_templates/index.html
@@ -178,7 +178,8 @@
Citing matplotlib
Open source
-
+
Please
consider donating
diff --git a/doc/faq/virtualenv_faq.rst b/doc/faq/virtualenv_faq.rst
index 9c385aafd256..934649f993c5 100644
--- a/doc/faq/virtualenv_faq.rst
+++ b/doc/faq/virtualenv_faq.rst
@@ -100,7 +100,7 @@ implemented in a script as below. To use this modify ``PYVER`` and
PYTHON=${PATHTOPYTHON}python${PYVER}
# find the root of the virtualenv, it should be the parent of the dir this script is in
- ENV=`$PYTHON -c "import os; print os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..'))"`
+ ENV=`$PYTHON -c "import os; print(os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..')))"`
# now run Python with the virtualenv set as Python's HOME
export PYTHONHOME=$ENV
diff --git a/doc/users/colormaps.rst b/doc/users/colormaps.rst
index 86b404bbc4b7..407faad5c036 100644
--- a/doc/users/colormaps.rst
+++ b/doc/users/colormaps.rst
@@ -166,7 +166,7 @@ printed in grayscale.
Color vision deficiencies
=========================
-There is a lot of information available about color blindness available (*e.g.*,
+There is a lot of information available about color blindness (*e.g.*,
[colorblindness]_). Additionally, there are tools available to convert images to
how they look for different types of color vision deficiencies (*e.g.*, [asp]_).
diff --git a/doc/users/event_handling.rst b/doc/users/event_handling.rst
index e63870b6bdf0..21c474bb648e 100644
--- a/doc/users/event_handling.rst
+++ b/doc/users/event_handling.rst
@@ -34,8 +34,8 @@ was pressed::
ax.plot(np.random.rand(10))
def onclick(event):
- print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
- event.button, event.x, event.y, event.xdata, event.ydata)
+ print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %
+ (event.button, event.x, event.y, event.xdata, event.ydata))
cid = fig.canvas.mpl_connect('button_press_event', onclick)
@@ -128,7 +128,7 @@ is created every time a mouse is pressed::
self.cid = line.figure.canvas.mpl_connect('button_press_event', self)
def __call__(self, event):
- print 'click', event
+ print('click', event)
if event.inaxes!=self.line.axes: return
self.xs.append(event.xdata)
self.ys.append(event.ydata)
@@ -196,7 +196,7 @@ Here is the solution::
contains, attrd = self.rect.contains(event)
if not contains: return
- print 'event contains', self.rect.xy
+ print('event contains', self.rect.xy)
x0, y0 = self.rect.xy
self.press = x0, y0, event.xdata, event.ydata
@@ -207,7 +207,8 @@ Here is the solution::
x0, y0, xpress, ypress = self.press
dx = event.xdata - xpress
dy = event.ydata - ypress
- #print 'x0=%f, xpress=%f, event.xdata=%f, dx=%f, x0+dx=%f'%(x0, xpress, event.xdata, dx, x0+dx)
+ #print('x0=%f, xpress=%f, event.xdata=%f, dx=%f, x0+dx=%f' %
+ # (x0, xpress, event.xdata, dx, x0+dx))
self.rect.set_x(x0+dx)
self.rect.set_y(y0+dy)
@@ -271,7 +272,7 @@ Extra credit solution::
if DraggableRectangle.lock is not None: return
contains, attrd = self.rect.contains(event)
if not contains: return
- print 'event contains', self.rect.xy
+ print('event contains', self.rect.xy)
x0, y0 = self.rect.xy
self.press = x0, y0, event.xdata, event.ydata
DraggableRectangle.lock = self
@@ -361,22 +362,22 @@ background that the mouse is over::
import matplotlib.pyplot as plt
def enter_axes(event):
- print 'enter_axes', event.inaxes
+ print('enter_axes', event.inaxes)
event.inaxes.patch.set_facecolor('yellow')
event.canvas.draw()
def leave_axes(event):
- print 'leave_axes', event.inaxes
+ print('leave_axes', event.inaxes)
event.inaxes.patch.set_facecolor('white')
event.canvas.draw()
def enter_figure(event):
- print 'enter_figure', event.canvas.figure
+ print('enter_figure', event.canvas.figure)
event.canvas.figure.patch.set_facecolor('red')
event.canvas.draw()
def leave_figure(event):
- print 'leave_figure', event.canvas.figure
+ print('leave_figure', event.canvas.figure)
event.canvas.figure.patch.set_facecolor('grey')
event.canvas.draw()
@@ -403,7 +404,6 @@ background that the mouse is over::
plt.show()
-
.. _object-picking:
Object picking
@@ -503,7 +503,8 @@ properties of the line. Here is the code::
xdata = thisline.get_xdata()
ydata = thisline.get_ydata()
ind = event.ind
- print 'onpick points:', zip(xdata[ind], ydata[ind])
+ points = tuple(zip(xdata[ind], ydata[ind]))
+ print('onpick points:', points)
fig.canvas.mpl_connect('pick_event', onpick)