.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/event_handling/ginput_manual_clabel_sgskip.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. meta:: :keywords: codex .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_event_handling_ginput_manual_clabel_sgskip.py: ===================== Interactive functions ===================== This provides examples of uses of interactive functions, such as ginput, waitforbuttonpress and manual clabel placement. .. note:: This example exercises the interactive capabilities of Matplotlib, and this will not appear in the static documentation. Please run this code on your machine to see the interactivity. You can copy and paste individual parts, or download the entire example using the link at the bottom of the page. .. GENERATED FROM PYTHON SOURCE LINES 17-29 .. code-block:: Python import time import matplotlib.pyplot as plt import numpy as np def tellme(s): print(s) plt.title(s, fontsize=16) plt.draw() .. GENERATED FROM PYTHON SOURCE LINES 30-31 Define a triangle by clicking three points .. GENERATED FROM PYTHON SOURCE LINES 31-62 .. code-block:: Python plt.figure() plt.xlim(0, 1) plt.ylim(0, 1) tellme('You will define a triangle, click to begin') plt.waitforbuttonpress() while True: pts = [] while len(pts) < 3: tellme('Select 3 corners with mouse') pts = np.asarray(plt.ginput(3, timeout=-1)) if len(pts) < 3: tellme('Too few points, starting over') time.sleep(1) # Wait a second ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2) tellme('Happy? Key click for yes, mouse click for no') if plt.waitforbuttonpress(): break # Get rid of fill for p in ph: p.remove() .. GENERATED FROM PYTHON SOURCE LINES 63-65 Now contour according to distance from triangle corners - just an example .. GENERATED FROM PYTHON SOURCE LINES 65-82 .. code-block:: Python # Define a nice function of distance from individual pts def f(x, y, pts): z = np.zeros_like(x) for p in pts: z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2)) return 1/z X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51)) Z = f(X, Y, pts) CS = plt.contour(X, Y, Z, 20) tellme('Use mouse to select contour label locations, middle button to finish') CL = plt.clabel(CS, manual=True) .. GENERATED FROM PYTHON SOURCE LINES 83-84 Now do a zoom .. GENERATED FROM PYTHON SOURCE LINES 84-101 .. code-block:: Python tellme('Now do a nested zoom, click to begin') plt.waitforbuttonpress() while True: tellme('Select two corners of zoom, middle mouse button to finish') pts = plt.ginput(2, timeout=-1) if len(pts) < 2: break (x0, y0), (x1, y1) = pts xmin, xmax = sorted([x0, x1]) ymin, ymax = sorted([y0, y1]) plt.xlim(xmin, xmax) plt.ylim(ymin, ymax) tellme('All Done!') plt.show() .. _sphx_glr_download_gallery_event_handling_ginput_manual_clabel_sgskip.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: ginput_manual_clabel_sgskip.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: ginput_manual_clabel_sgskip.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_