|
3 | 3 | Annotation arrow style reference |
4 | 4 | ================================ |
5 | 5 |
|
6 | | -Overview of the arrow styles available in `~.Axes.annotate`. |
| 6 | +Overview of the available `.ArrowStyle` settings. These are used for the *arrowstyle* |
| 7 | +parameter of `~.Axes.annotate` and `.FancyArrowPatch`. |
| 8 | +
|
| 9 | +Each style can be configured with a set of parameters, which are stated along with |
| 10 | +their default values. |
7 | 11 | """ |
8 | 12 |
|
9 | 13 | import inspect |
|
12 | 16 |
|
13 | 17 | import matplotlib.pyplot as plt |
14 | 18 |
|
15 | | -import matplotlib.patches as mpatches |
| 19 | +from matplotlib.patches import ArrowStyle |
16 | 20 |
|
17 | | -styles = mpatches.ArrowStyle.get_styles() |
| 21 | +styles = ArrowStyle.get_styles() |
18 | 22 | ncol = 2 |
19 | 23 | nrow = (len(styles) + 1) // ncol |
20 | | -axs = (plt.figure(figsize=(4 * ncol, 1 + nrow)) |
21 | | - .add_gridspec(1 + nrow, ncol, |
22 | | - wspace=0, hspace=0, left=0, right=1, bottom=0, top=1).subplots()) |
| 24 | +gridspec_kw = dict(wspace=0, hspace=0.05, left=0, right=1, bottom=0, top=1) |
| 25 | +fig, axs = plt.subplots(1 + nrow, ncol, |
| 26 | + figsize=(4 * ncol, 1 + nrow), gridspec_kw=gridspec_kw) |
23 | 27 | for ax in axs.flat: |
24 | | - ax.set_xlim(-0.5, 4) |
| 28 | + ax.set_xlim(-0.1, 4) |
25 | 29 | ax.set_axis_off() |
26 | 30 | for ax in axs[0, :]: |
27 | | - ax.text(-0.25, 0.5, "arrowstyle", size="large", color="tab:blue") |
28 | | - ax.text(1.25, .5, "default parameters", size="large") |
| 31 | + ax.text(0, 0.5, "arrowstyle", size="large", color="tab:blue") |
| 32 | + ax.text(1.4, .5, "default parameters", size="large") |
29 | 33 | for ax, (stylename, stylecls) in zip(axs[1:, :].T.flat, styles.items()): |
30 | 34 | # draw dot and annotation with arrowstyle |
31 | | - l, = ax.plot(1, 0, "o", color="grey") |
32 | | - ax.annotate(stylename, (1, 0), (0, 0), |
33 | | - size="large", color="tab:blue", ha="center", va="center", |
| 35 | + l, = ax.plot(1.25, 0, "o", color="darkgrey") |
| 36 | + ax.annotate(stylename, (1.25, 0), (0, 0), |
| 37 | + size="large", color="tab:blue", va="center", family="monospace", |
34 | 38 | arrowprops=dict( |
35 | | - arrowstyle=stylename, connectionstyle="arc3,rad=-0.05", |
36 | | - color="k", shrinkA=5, shrinkB=5, patchB=l, |
| 39 | + arrowstyle=stylename, connectionstyle="arc3,rad=0", |
| 40 | + color="black", shrinkA=5, shrinkB=5, patchB=l, |
37 | 41 | ), |
38 | | - bbox=dict(boxstyle="square", fc="w", ec="grey")) |
| 42 | + bbox=dict(boxstyle="square", fc="w", ec="darkgrey")) |
39 | 43 | # draw default parameters |
40 | 44 | # wrap at every nth comma (n = 1 or 2, depending on text length) |
41 | 45 | s = str(inspect.signature(stylecls))[1:-1] |
42 | 46 | n = 2 if s.count(',') > 3 else 1 |
43 | | - ax.text(1.25, 0, |
| 47 | + ax.text(1.4, 0, |
44 | 48 | re.sub(', ', lambda m, c=itertools.count(1): m.group() |
45 | 49 | if next(c) % n else '\n', s), |
46 | | - verticalalignment="center") |
| 50 | + verticalalignment="center", color="0.3") |
47 | 51 |
|
48 | 52 | plt.show() |
49 | 53 |
|
|
0 commit comments