diff --git a/doc/faq/anatomy.png b/doc/faq/anatomy.png new file mode 100644 index 000000000000..badd777759a8 Binary files /dev/null and b/doc/faq/anatomy.png differ diff --git a/doc/faq/fig_map.png b/doc/faq/fig_map.png deleted file mode 100644 index 8af3500399fd..000000000000 Binary files a/doc/faq/fig_map.png and /dev/null differ diff --git a/doc/faq/usage_faq.rst b/doc/faq/usage_faq.rst index d2ad10c31bee..f67593a6df53 100644 --- a/doc/faq/usage_faq.rst +++ b/doc/faq/usage_faq.rst @@ -50,12 +50,12 @@ completely, leaving a purely object-oriented approach. Parts of a Figure ================= -.. image:: fig_map.png +.. image:: anatomy.png :class:`~matplotlib.figure.Figure` ---------------------------------- -The **whole** figure (marked as the outer red box). The figure keeps +The **whole** figure. The figure keeps track of all the child :class:`~matplotlib.axes.Axes`, a smattering of 'special' artists (titles, figure legends, etc), and the **canvas**. (Don't worry too much about the canvas, it is crucial as it is the diff --git a/examples/showcase/anatomy.py b/examples/showcase/anatomy.py new file mode 100644 index 000000000000..01d2b56eb147 --- /dev/null +++ b/examples/showcase/anatomy.py @@ -0,0 +1,138 @@ +# This figure shows the name of several matplotlib elements composing a figure + +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.ticker import MultipleLocator, FuncFormatter + +np.random.seed(123) + +X = np.linspace(0.5, 3.5, 100) +Y1 = 3+np.cos(X) +Y2 = 1+np.cos(1+X/0.75)/2 +Y3 = np.random.uniform(Y1, Y2, len(X)) + +fig = plt.figure(figsize=(8, 8), facecolor="w") +ax = fig.add_subplot(1, 1, 1, aspect=1) + + +def minor_tick(x, pos): + if not x % 1.0: + return "" + return "%.2f" % x + +ax.xaxis.set_major_locator(MultipleLocator(1.000)) +ax.xaxis.set_minor_locator(MultipleLocator(0.250)) +ax.yaxis.set_major_locator(MultipleLocator(1.000)) +ax.yaxis.set_minor_locator(MultipleLocator(0.250)) +ax.xaxis.set_minor_formatter(FuncFormatter(minor_tick)) + +ax.set_xlim(0, 4) +ax.set_ylim(0, 4) + +ax.tick_params(which='major', width=1.0) +ax.tick_params(which='major', length=10) +ax.tick_params(which='minor', width=1.0, labelsize=10) +ax.tick_params(which='minor', length=5, labelsize=10, labelcolor='0.25') + +ax.grid(linestyle="--", linewidth=0.5, color='.25', zorder=-10) + +ax.plot(X, Y1, c=(0.25, 0.25, 1.00), lw=2, label="Blue signal", zorder=10) +ax.plot(X, Y2, c=(1.00, 0.25, 0.25), lw=2, label="Red signal") +ax.scatter(X, Y3, c='w') + +ax.set_title("Anatomy of a figure", fontsize=20) +ax.set_xlabel("X axis label") +ax.set_ylabel("Y axis label") + +ax.legend(frameon=False) + + +def circle(x, y, radius=0.15): + from matplotlib.patches import Circle + from matplotlib.patheffects import withStroke + circle = Circle((x, y), radius, clip_on=False, zorder=10, linewidth=1, + edgecolor='black', facecolor=(0, 0, 0, .0125), + path_effects=[withStroke(linewidth=5, foreground='w')]) + ax.add_artist(circle) + + +def text(x, y, text): + ax.text(x, y, text, backgroundcolor="white", + ha='center', va='top', weight='bold', color='blue') + + +# Minor tick +circle(0.50, -.05) +text(0.50, -0.25, "Minor tick label") + +# Major tick +circle(4.00, 2.00) +text(4.00, 1.80, "Major tick") + +# Minor tick +circle(0.25, 4.00) +text(0.25, 3.80, "Minor tick") + +# Major tick label +circle(-0.05, 3.00) +text(-0.05, 2.80, "Major tick label") + +# X Label +circle(1.80, -0.22) +text(1.80, -0.4, "X axis label") + +# Y Label +circle(-0.20, 1.80) +text(-0.20, 1.6, "Y axis label") + +# Title +circle(1.60, 4.10) +text(1.60, 3.9, "Title") + +# Blue plot +circle(1.75, 2.80) +text(1.75, 2.60, "Line\n(line plot)") + +# Red plot +circle(1.20, 0.60) +text(1.20, 0.40, "Line\n(line plot)") + +# Scatter plot +circle(3.20, 1.75) +text(3.20, 1.55, "Markers\n(scatter plot)") + +# Grid +circle(3.00, 3.00) +text(3.00, 2.80, "Grid") + +# Legend +circle(3.70, 3.75) +text(3.70, 3.55, "Legend") + +# Axes +circle(0.5, 0.5) +text(0.5, 0.3, "Axes") + +# Figure +circle(-0.3, 0.65) +text(-0.3, 0.45, "Figure") + +color = 'blue' +ax.annotate('Spines', xy=(4.0, 0.35), xycoords='data', + xytext=(3.3, 0.5), textcoords='data', + weight='bold', color=color, + arrowprops=dict(arrowstyle='->', + connectionstyle="arc3", + color=color)) + +ax.annotate('', xy=(3.15, 0.0), xycoords='data', + xytext=(3.45, 0.45), textcoords='data', + weight='bold', color=color, + arrowprops=dict(arrowstyle='->', + connectionstyle="arc3", + color=color)) + +ax.text(4.0, -0.4, "Made with http://matplotlib.org", + fontsize=10, ha="right", color='.5') + +plt.show()
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: