-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Expand file tree
/
Copy pathtest_axis.py
More file actions
130 lines (104 loc) · 5.04 KB
/
test_axis.py
File metadata and controls
130 lines (104 loc) · 5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.axis import XTick
from matplotlib.testing.decorators import check_figures_equal
def test_tick_labelcolor_array():
# Smoke test that we can instantiate a Tick with labelcolor as array.
ax = plt.axes()
XTick(ax, 0, labelcolor=np.array([1, 0, 0, 1]))
def test_axis_not_in_layout():
fig1, (ax1_left, ax1_right) = plt.subplots(ncols=2, layout='constrained')
fig2, (ax2_left, ax2_right) = plt.subplots(ncols=2, layout='constrained')
# 100 label overlapping the end of the axis
ax1_left.set_xlim(0, 100)
# 100 label not overlapping the end of the axis
ax2_left.set_xlim(0, 120)
for ax in ax1_left, ax2_left:
ax.set_xticks([0, 100])
ax.xaxis.set_in_layout(False)
for fig in fig1, fig2:
fig.draw_without_rendering()
# Positions should not be affected by overlapping 100 label
assert ax1_left.get_position().bounds == ax2_left.get_position().bounds
assert ax1_right.get_position().bounds == ax2_right.get_position().bounds
@check_figures_equal()
def test_tick_not_in_layout(fig_test, fig_ref):
# Check that the "very long" ticklabel is ignored from layouting after
# set_in_layout(False); i.e. the layout is as if the ticklabel was empty.
# Ticklabels are set to white so that the actual string doesn't matter.
fig_test.set_layout_engine("constrained")
ax = fig_test.add_subplot(xticks=[0, 1], xticklabels=["short", "very long"])
ax.tick_params(labelcolor="w")
fig_test.draw_without_rendering() # Ensure ticks are correct.
ax.xaxis.majorTicks[-1].label1.set_in_layout(False)
fig_ref.set_layout_engine("constrained")
ax = fig_ref.add_subplot(xticks=[0, 1], xticklabels=["short", ""])
ax.tick_params(labelcolor="w")
def test_translate_tick_params_reverse():
fig, ax = plt.subplots()
kw = {'label1On': 'a', 'label2On': 'b', 'tick1On': 'c', 'tick2On': 'd'}
assert (ax.xaxis._translate_tick_params(kw, reverse=True) ==
{'labelbottom': 'a', 'labeltop': 'b', 'bottom': 'c', 'top': 'd'})
assert (ax.yaxis._translate_tick_params(kw, reverse=True) ==
{'labelleft': 'a', 'labelright': 'b', 'left': 'c', 'right': 'd'})
def test_get_tick_position_rcParams():
"""Test that get_tick_position() correctly picks up rcParams tick positions."""
plt.rcParams.update({
"xtick.top": 1, "xtick.labeltop": 1, "xtick.bottom": 0, "xtick.labelbottom": 0,
"ytick.right": 1, "ytick.labelright": 1, "ytick.left": 0, "ytick.labelleft": 0,
})
ax = plt.figure().add_subplot()
assert ax.xaxis.get_ticks_position() == "top"
assert ax.yaxis.get_ticks_position() == "right"
def test_get_tick_position_tick_top_tick_right():
"""Test that get_tick_position() correctly picks up tick_top() / tick_right()."""
ax = plt.figure().add_subplot()
ax.xaxis.tick_top()
ax.yaxis.tick_right()
assert ax.xaxis.get_ticks_position() == "top"
assert ax.yaxis.get_ticks_position() == "right"
def test_get_tick_position_tick_params():
"""Test that get_tick_position() correctly picks up tick_params()."""
ax = plt.figure().add_subplot()
ax.tick_params(top=True, labeltop=True, bottom=False, labelbottom=False,
right=True, labelright=True, left=False, labelleft=False)
assert ax.xaxis.get_ticks_position() == "top"
assert ax.yaxis.get_ticks_position() == "right"
def test_grid_rcparams():
"""Tests that `grid.major/minor.*` overwrites `grid.*` in rcParams."""
plt.rcParams.update({
"axes.grid": True, "axes.grid.which": "both",
"ytick.minor.visible": True, "xtick.minor.visible": True,
})
def_linewidth = plt.rcParams["grid.linewidth"]
def_linestyle = plt.rcParams["grid.linestyle"]
def_alpha = plt.rcParams["grid.alpha"]
plt.rcParams.update({
"grid.color": "gray", "grid.minor.color": "red",
"grid.major.linestyle": ":", "grid.major.linewidth": 2,
"grid.minor.alpha": 0.6,
})
_, ax = plt.subplots()
ax.plot([0, 1])
assert ax.xaxis.get_major_ticks()[0].gridline.get_color() == "gray"
assert ax.xaxis.get_minor_ticks()[0].gridline.get_color() == "red"
assert ax.xaxis.get_major_ticks()[0].gridline.get_linewidth() == 2
assert ax.xaxis.get_minor_ticks()[0].gridline.get_linewidth() == def_linewidth
assert ax.xaxis.get_major_ticks()[0].gridline.get_linestyle() == ":"
assert ax.xaxis.get_minor_ticks()[0].gridline.get_linestyle() == def_linestyle
assert ax.xaxis.get_major_ticks()[0].gridline.get_alpha() == def_alpha
assert ax.xaxis.get_minor_ticks()[0].gridline.get_alpha() == 0.6
def test_set_ticks_emits_lim_changed():
fig, ax1 = plt.subplots()
ax1.set_xlim(0.5, 1)
called_cartesian = []
ax1.callbacks.connect("xlim_changed", called_cartesian.append)
ax1.set_xticks([0, 100])
assert called_cartesian
fig = plt.figure()
ax2 = fig.add_subplot(projection="polar")
ax2.set_ylim(0.5, 1)
called_polar = []
ax2.callbacks.connect("ylim_changed", called_polar.append)
ax2.set_rticks([1, 2, 3])
assert called_polar