|
17 | 17 | import numpy as np
|
18 | 18 | import matplotlib.pyplot as plt
|
19 | 19 |
|
20 |
| - |
21 |
| -def two_scales(ax1, time, data1, data2, c1, c2): |
22 |
| - """ |
23 |
| - Parameters |
24 |
| - ---------- |
25 |
| - ax1 : axis |
26 |
| - Axis to share a second scale with. |
27 |
| -
|
28 |
| - time : array-like |
29 |
| - x-axis values for both datasets. |
30 |
| -
|
31 |
| - data1, data2: array-like |
32 |
| - Data for respectively the left and the right hand scale. |
33 |
| -
|
34 |
| - c1, c2 : color |
35 |
| - Color for respectively the left and the right hand scale. |
36 |
| -
|
37 |
| - Returns |
38 |
| - ------- |
39 |
| - ax1, ax2 : tuple of axis instances |
40 |
| - Respectively the original axis and its new twin axis. |
41 |
| -
|
42 |
| - """ |
43 |
| - ax2 = ax1.twinx() # create a second axes that shares the same x-axis |
44 |
| - |
45 |
| - for ax, data, c in ((ax1, data1, c1), (ax2, data2, c2)): |
46 |
| - ax.plot(time, data, color=c) |
47 |
| - # Color the y-axis (both label and tick labels) |
48 |
| - ax.yaxis.label.set_color(c) |
49 |
| - for t in ax.get_yticklabels(): |
50 |
| - t.set_color(c) |
51 |
| - |
52 |
| - return ax1, ax2 |
53 |
| - |
54 | 20 | # Create some mock data
|
55 | 21 | t = np.arange(0.01, 10.0, 0.01)
|
56 |
| -s1 = np.exp(t) |
57 |
| -s2 = np.sin(2 * np.pi * t) |
| 22 | +data1 = np.exp(t) |
| 23 | +data2 = np.sin(2 * np.pi * t) |
| 24 | + |
| 25 | +# Create twin axes and plot the mock data onto them |
| 26 | +fig, ax1 = plt.subplots() |
| 27 | +ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis |
58 | 28 |
|
59 |
| -# Create axes and plot the mock data onto them |
60 |
| -fig, ax = plt.subplots() |
61 |
| -ax1, ax2 = two_scales(ax, t, s1, s2, 'r', 'b') |
| 29 | +for ax, data, c in ((ax1, data1, "red"), (ax2, data2, "blue")): |
| 30 | + ax.plot(t, data, color=c) |
| 31 | + # Color the y-axis (both label and tick labels) |
| 32 | + ax.yaxis.label.set_color(c) |
| 33 | + for tl in ax.get_yticklabels(): |
| 34 | + tl.set_color(c) |
62 | 35 |
|
63 | 36 | # Label both axes
|
64 | 37 | ax1.set_xlabel('time (s)')
|
65 | 38 | ax1.set_ylabel('exp')
|
66 | 39 | ax2.set_ylabel('sin') # NB: we already took care of the x-label with ax1
|
67 | 40 |
|
68 |
| -fig.tight_layout() # otherwise the y-labels are slightly clipped |
| 41 | +fig.tight_layout() # otherwise the right y-label is slightly clipped |
69 | 42 | plt.show()
|
0 commit comments