diff --git a/examples/showcase/anatomy.py b/examples/showcase/anatomy.py index cc3f334c0987..5f292c15d41e 100644 --- a/examples/showcase/anatomy.py +++ b/examples/showcase/anatomy.py @@ -6,10 +6,18 @@ This figure shows the name of several matplotlib elements composing a figure """ + import numpy as np import matplotlib.pyplot as plt +from matplotlib.patches import Circle, Rectangle +from matplotlib.patheffects import withStroke from matplotlib.ticker import AutoMinorLocator, MultipleLocator +royal_blue = "#002082" +royal_blue = [0, 20/256, 82/256] + +# make the figure + np.random.seed(19680801) X = np.linspace(0.5, 3.5, 100) @@ -17,8 +25,10 @@ Y2 = 1+np.cos(1+X/0.75)/2 Y3 = np.random.uniform(Y1, Y2, len(X)) -fig = plt.figure(figsize=(8, 8)) -ax = fig.add_subplot(1, 1, 1, aspect=1) +fig = plt.figure(figsize=(8, 8), facecolor='1') +marg = 0.15 +ax = fig.add_axes([marg, marg, 1-1.8*marg, 1-1.8*marg], aspect=1, + facecolor='1') def minor_tick(x, pos): @@ -36,110 +46,107 @@ def minor_tick(x, pos): 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='major', width=1.0, labelsize=14) +ax.tick_params(which='major', length=10, labelsize=14) 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.plot(X, Y3, linewidth=0, - marker='o', markerfacecolor='w', markeredgecolor='k') +ax.plot(X, Y1, c='C0', lw=2.5, label="Blue signal", zorder=10) +ax.plot(X, Y2, c='C1', lw=2.5, label="Orange signal") +ax.plot(X[::3], Y3[::3], linewidth=0, markersize=9, + marker='s', markerfacecolor='none', markeredgecolor='C4', + markeredgewidth=2.5) ax.set_title("Anatomy of a figure", fontsize=20, verticalalignment='bottom') -ax.set_xlabel("X axis label") -ax.set_ylabel("Y axis label") +ax.set_xlabel("x Axis label", fontsize=14) +ax.set_ylabel("y Axis label", fontsize=14) + +ax.legend(loc="upper right", fontsize=14) -ax.legend(loc="upper right") +# Annotate the figure -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 just_circle(x, y, radius=0.15): + c = Circle((x, y), radius, clip_on=False, zorder=10, linewidth=2.5, + edgecolor=royal_blue + [0.6], facecolor='none', + path_effects=[withStroke(linewidth=7, foreground=(1, 1, 1, 1))]) + ax.add_artist(c) def text(x, y, text): - ax.text(x, y, text, backgroundcolor="white", - ha='center', va='top', weight='bold', color='blue') + ax.text(x, y, text, zorder=100, + ha='center', va='top', weight='bold', color=royal_blue, + style='italic', fontfamily='monospace', + path_effects=[withStroke(linewidth=7, foreground=(1, 1, 1, 1))]) -# Minor tick -circle(0.50, -0.10) -text(0.50, -0.32, "Minor tick label") +def code(x, y, text): + ax.text(x, y, text, zorder=100, + ha='center', va='top', weight='normal', color='0.0', + fontfamily='Courier New', fontsize='medium', + path_effects=[withStroke(linewidth=7, foreground=(1, 1, 1, 1))]) + + +def circle(x, y, txt, cde, radius=0.15): + just_circle(x, y, radius=radius) + text(x, y-0.2, txt) + code(x, y-0.33, cde) + +# Minor tick label +circle(3.25, -0.10, "Minor tick label", + "ax.xaxis.set_minor_formatter") # Major tick -circle(-0.03, 4.00) -text(0.03, 3.80, "Major tick") +circle(-0.03, 1.05, "Major tick", "ax.yaxis.set_major_locator") # Minor tick -circle(0.00, 3.50) -text(0.00, 3.30, "Minor tick") +y = 3.75 +circle(0.00, 3.75, "Minor tick", "ax.yaxis.set_minor_locator") # Major tick label -circle(-0.15, 3.00) -text(-0.15, 2.80, "Major tick label") +circle(-0.15, 3.00, "Major tick label", "ax.yaxis.set_major_formatter") # X Label -circle(1.80, -0.27) -text(1.80, -0.45, "X axis label") +circle(1.90, -0.32, "xlabel", "ax.set_xlabel") # Y Label -circle(-0.27, 1.80) -text(-0.27, 1.6, "Y axis label") +circle(-0.27, 1.68, "ylabel", "ax.set_ylabel") # Title -circle(1.60, 4.13) -text(1.60, 3.93, "Title") +circle(1.58, 4.13, "Title", "ax.set_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)") +circle(1.75, 2.80, "Line", "ax.plot") # Scatter plot -circle(3.20, 1.75) -text(3.20, 1.55, "Markers\n(scatter plot)") +circle(2.25, 1.54, "Markers", "ax.scatter") # Grid -circle(3.00, 3.00) -text(3.00, 2.80, "Grid") +circle(3.00, 3.00, "Grid", "ax.grid") # Legend -circle(3.70, 3.80) -text(3.70, 3.60, "Legend") +circle(3.60, 3.65, "Legend", "ax.legend") # Axes -circle(0.5, 0.5) -text(0.5, 0.3, "Axes") +circle(2.5, 0.55, "Axes", "fig.subplots") # Figure -circle(-0.3, 0.65) -text(-0.3, 0.45, "Figure") - -color = 'blue' -ax.annotate('Spines', xy=(4.0, 0.35), xytext=(3.3, 0.5), - weight='bold', color=color, - arrowprops=dict(arrowstyle='->', - connectionstyle="arc3", - color=color)) - -ax.annotate('', xy=(3.15, 0.0), xytext=(3.45, 0.45), - weight='bold', color=color, - arrowprops=dict(arrowstyle='->', - connectionstyle="arc3", - color=color)) - -ax.text(4.0, -0.4, "Made with https://matplotlib.org", - fontsize=10, ha="right", color='.5') +circle(4.185, 4.3, "Figure", "plt.figure") + +# x Axis +circle(0.65, 0.01, "x Axis", "ax.xaxis") + +# y Axis +circle(0, 0.44, "y Axis", "ax.yaxis") + +# Spine +circle(4.0, 0.7, "Spine", "ax.spines") + +# frame around figure... +fig.add_artist(Rectangle((0, 0), width=1, height=1, facecolor='none', + edgecolor='0.5', linewidth=10)) plt.show() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy