Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 57fcc48

Browse files
committed
FIX: remove trailing whitespace
1 parent dde0763 commit 57fcc48

2 files changed

Lines changed: 86 additions & 15 deletions

File tree

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,9 @@ def draw(self, renderer):
501501
# Then gridlines
502502
for axis in self._axis_map.values():
503503
axis.draw_grid(renderer)
504+
# Then minor gridlines
505+
for axis in self._axis_map.values():
506+
axis.draw_minor_grid(renderer)
504507
# Then axes, labels, text, and ticks
505508
for axis in self._axis_map.values():
506509
axis.draw(renderer)
@@ -1562,6 +1565,9 @@ def clear(self):
15621565
self._view_margin = 1/48 # default value to match mpl3.8
15631566
self.autoscale_view()
15641567

1568+
self._draw_minor_grid = False
1569+
self._minor_grid_kwargs = {}
1570+
self.grid(mpl.rcParams['axes3d.grid'])
15651571
self.grid(mpl.rcParams['axes3d.grid'])
15661572

15671573
def _button_press(self, event):
@@ -2055,21 +2061,31 @@ def get_zlabel(self):
20552061
get_frame_on = None
20562062
set_frame_on = None
20572063

2058-
def grid(self, visible=True, **kwargs):
2059-
"""
2060-
Set / unset 3D grid.
2061-
2062-
.. note::
2063-
2064-
Currently, this function does not behave the same as
2065-
`.axes.Axes.grid`, but it is intended to eventually support that
2066-
behavior.
2067-
"""
2068-
# TODO: Operate on each axes separately
2069-
if len(kwargs):
2070-
visible = True
2071-
self._draw_grid = visible
2072-
self.stale = True
2064+
def grid(self, visible=True, which='major', axis='both', **kwargs):
2065+
"""
2066+
Set / unset 3D grid.
2067+
2068+
.. note::
2069+
Currently, this function does not behave the same as
2070+
:meth:`matplotlib.axes.Axes.grid`, but it is intended to
2071+
eventually support that behavior.
2072+
2073+
Parameters
2074+
----------
2075+
visible : bool
2076+
which : {'major', 'minor', 'both'}
2077+
axis : {'both', 'x', 'y', 'z'}
2078+
**kwargs : Line properties forwarded to the grid lines.
2079+
"""
2080+
if len(kwargs):
2081+
visible = True
2082+
if which in ('major', 'both'):
2083+
self._draw_grid = bool(visible)
2084+
self._major_grid_kwargs = kwargs
2085+
if which in ('minor', 'both'):
2086+
self._draw_minor_grid = bool(visible)
2087+
self._minor_grid_kwargs = kwargs
2088+
self.stale = True
20732089

20742090
def tick_params(self, axis='both', **kwargs):
20752091
"""

lib/mpl_toolkits/mplot3d/axis3d.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ def _init3d(self):
160160
self.axes._set_artist_props(self.pane)
161161
self.gridlines = art3d.Line3DCollection([])
162162
self.axes._set_artist_props(self.gridlines)
163+
self.minor_gridlines = art3d.Line3DCollection([])
164+
self.axes._set_artist_props(self.minor_gridlines)
163165
self.axes._set_artist_props(self.label)
164166
self.axes._set_artist_props(self.offsetText)
165167
# Need to be able to place the label at the correct location
@@ -678,6 +680,59 @@ def draw_grid(self, renderer):
678680

679681
renderer.close_group('grid3d')
680682

683+
@artist.allow_rasterization
684+
def draw_minor_grid(self, renderer):
685+
if not getattr(self.axes, '_draw_minor_grid', False):
686+
return
687+
688+
renderer.open_group("minor_grid3d", gid=self.get_gid())
689+
690+
minor_locs = self.get_minorticklocs()
691+
if len(minor_locs):
692+
info = self._axinfo
693+
index = info["i"]
694+
695+
mins, maxs, tc, highs = self._get_coord_info()
696+
xlim, ylim, zlim = (self.axes.get_xbound(),
697+
self.axes.get_ybound(),
698+
self.axes.get_zbound())
699+
data_mins = np.array([xlim[0], ylim[0], zlim[0]])
700+
data_maxs = np.array([xlim[1], ylim[1], zlim[1]])
701+
minmax = np.where(highs, data_maxs, data_mins)
702+
maxmin = np.where(~highs, data_maxs, data_mins)
703+
704+
# Filter to ticks within view limits
705+
vmin, vmax = self.get_view_interval()
706+
minor_locs = [t for t in minor_locs if vmin <= t <= vmax]
707+
708+
if len(minor_locs):
709+
xyz0 = np.tile(minmax, (len(minor_locs), 1))
710+
xyz0[:, index] = minor_locs
711+
712+
lines = np.stack([xyz0, xyz0, xyz0], axis=1)
713+
lines[:, 0, index - 2] = maxmin[index - 2]
714+
lines[:, 2, index - 1] = maxmin[index - 1]
715+
716+
self.minor_gridlines.set_segments(lines)
717+
718+
# Default minor style: thinner and more transparent than major
719+
gridinfo = info['grid']
720+
minor_kw = {
721+
'color': gridinfo['color'],
722+
'linewidth': gridinfo['linewidth'] * 0.5,
723+
'linestyle': gridinfo['linestyle'],
724+
}
725+
# Apply any user overrides from ax.grid(which='minor', ...)
726+
minor_kw.update(getattr(self.axes, '_minor_grid_kwargs', {}))
727+
728+
self.minor_gridlines.set_color(minor_kw['color'])
729+
self.minor_gridlines.set_linewidth(minor_kw['linewidth'])
730+
self.minor_gridlines.set_linestyle(minor_kw['linestyle'])
731+
self.minor_gridlines.do_3d_projection()
732+
self.minor_gridlines.draw(renderer)
733+
734+
renderer.close_group('minor_grid3d')
735+
681736
# TODO: Get this to work (more) properly when mplot3d supports the
682737
# transforms framework.
683738
def get_tightbbox(self, renderer=None, *, for_layout_only=False):

0 commit comments

Comments
 (0)