Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
bffeb0a
Possible fix for issue #13919
konmenel Jan 17, 2025
87726b6
fix flake warnings
konmenel Jan 18, 2025
e3d22aa
Resolve suggested changes
konmenel Jan 27, 2025
536b52e
Add new validators in stub file
konmenel Jan 27, 2025
397a2ad
make stub file arguments same as runtime
konmenel Jan 27, 2025
87339d8
Add distinction for x and y axis in grid line options
konmenel Jan 28, 2025
09a7346
fix flake8
konmenel Jan 28, 2025
42e0054
Add What's New note
konmenel Jan 28, 2025
39eef79
Extend `_val_or_rc` to support multiply names
konmenel Jan 28, 2025
a4e6f44
Fix linting for and _validate_linestyle_or_None to mypy allowlist
konmenel Jan 28, 2025
9a2b2b2
Remove validate linestyle functions from stubtest allow list
konmenel Jan 28, 2025
c886330
Revert change to just grid.major/minor distinction in rcParams
konmenel Jan 29, 2025
cd3c260
Update What's New note and reduced example
konmenel Jan 29, 2025
456034c
Add testing for `grid.major/minor.*` in rcParams
konmenel Jan 29, 2025
ca5a443
fix indentation and linting
konmenel Jan 29, 2025
b455d6b
Fix example description
konmenel Jan 29, 2025
2cb99fc
Fix spelling
konmenel Jan 29, 2025
6552586
Merge branch 'main' into fix-issue-13919
timhoffm Jan 31, 2025
830b8a0
Fix type
konmenel Jun 9, 2025
5b623a3
Fix formatting
konmenel Jun 9, 2025
6db787a
`validate_color_or_None` private and fix argument names
konmenel Jun 9, 2025
a6db063
Fix validator name in stub file as well
konmenel Jun 9, 2025
c14aa8a
correct validators for grid.*.color keys
konmenel Jun 9, 2025
1ae82eb
Revert change in mypy-stubtest-allowlist.txt
konmenel Jun 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions lib/matplotlib/axis.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,32 @@ def __init__(
zorder = mlines.Line2D.zorder
self._zorder = zorder

grid_color = mpl._val_or_rc(grid_color, "grid.color")
grid_linestyle = mpl._val_or_rc(grid_linestyle, "grid.linestyle")
grid_linewidth = mpl._val_or_rc(grid_linewidth, "grid.linewidth")
grid_color = (
mpl._val_or_rc(grid_color, "grid.color")
if mpl.rcParams[f"grid.{major_minor}.color"] is None
else mpl._val_or_rc(grid_color, f"grid.{major_minor}.color")
)
grid_linestyle = (
mpl._val_or_rc(grid_linestyle, "grid.linestyle")
if mpl.rcParams[f"grid.{major_minor}.linestyle"] is None
else mpl._val_or_rc(grid_linestyle, f"grid.{major_minor}.linestyle")
)
grid_linewidth = (
mpl._val_or_rc(grid_linewidth, "grid.linewidth")
if mpl.rcParams[f"grid.{major_minor}.linewidth"] is None
else mpl._val_or_rc(grid_linewidth, f"grid.{major_minor}.linewidth")
)
if grid_alpha is None and not mcolors._has_alpha_channel(grid_color):
# alpha precedence: kwarg > color alpha > rcParams['grid.alpha']
# Note: only resolve to rcParams if the color does not have alpha
# otherwise `grid(color=(1, 1, 1, 0.5))` would work like
# grid(color=(1, 1, 1, 0.5), alpha=rcParams['grid.alpha'])
# so the that the rcParams default would override color alpha.
grid_alpha = mpl.rcParams["grid.alpha"]
grid_alpha = (
mpl.rcParams["grid.alpha"]
if mpl.rcParams[f"grid.{major_minor}.alpha"] is None
else mpl.rcParams[f"grid.{major_minor}.alpha"]
)
grid_kw = {k[5:]: v for k, v in kwargs.items()}

self.tick1line = mlines.Line2D(
Expand Down
10 changes: 10 additions & 0 deletions lib/matplotlib/mpl-data/matplotlibrc
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,16 @@
#grid.linewidth: 0.8 # in points
#grid.alpha: 1.0 # transparency, between 0.0 and 1.0

#grid.major.color: None # If None defaults to grid.color
#grid.major.linestyle: None # If None defaults to grid.linestyle
#grid.major.linewidth: None # If None defaults to grid.linewidth
#grid.major.alpha: None # If None defaults to grid.alpha

#grid.minor.color: None # If None defaults to grid.color
#grid.minor.linestyle: None # If None defaults to grid.linestyle
#grid.minor.linewidth: None # If None defaults to grid.linewidth
#grid.minor.alpha: None # If None defaults to grid.alpha


## ***************************************************************************
## * LEGEND *
Expand Down
23 changes: 23 additions & 0 deletions lib/matplotlib/rcsetup.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,12 @@ def validate_color(s):
raise ValueError(f'{s!r} does not look like a color arg')


def validate_color_or_None(s):
Comment thread
konmenel marked this conversation as resolved.
Outdated
if s is None or cbook._str_equal(s, "None"):
return None
return validate_color(s)


validate_colorlist = _listify_validator(
validate_color, allow_stringlist=True, doc='return a list of colorspecs')

Expand Down Expand Up @@ -514,6 +520,13 @@ def _is_iterable_not_string_like(x):
raise ValueError(f"linestyle {ls!r} is not a valid on-off ink sequence.")


def _validate_linestyle_or_None(ls):
if ls is None or cbook._str_equal(ls, "None"):
return None

return _validate_linestyle(ls)
Comment thread
konmenel marked this conversation as resolved.
Outdated


validate_fillstyle = ValidateInStrings(
'markers.fillstyle', ['full', 'left', 'right', 'bottom', 'top', 'none'])

Expand Down Expand Up @@ -1237,6 +1250,16 @@ def _convert_validator_spec(key, conv):
"grid.linewidth": validate_float, # in points
"grid.alpha": validate_float,

"grid.major.color": validate_color_or_None, # grid color
"grid.major.linestyle": _validate_linestyle_or_None, # solid
"grid.major.linewidth": validate_float_or_None, # in points
"grid.major.alpha": validate_float_or_None,

"grid.minor.color": validate_color_or_None, # grid color
"grid.minor.linestyle": _validate_linestyle_or_None, # solid
"grid.minor.linewidth": validate_float_or_None, # in points
"grid.minor.alpha": validate_float_or_None,

## figure props
# figure title
"figure.titlesize": validate_fontsize,
Expand Down
2 changes: 2 additions & 0 deletions lib/matplotlib/rcsetup.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def validate_color_or_auto(s: Any) -> ColorType | Literal["auto"]: ...
def _validate_color_or_edge(s: Any) -> ColorType | Literal["edge"]: ...
def validate_color_for_prop_cycle(s: Any) -> ColorType: ...
def validate_color(s: Any) -> ColorType: ...
def validate_color_or_None(s: Any) -> ColorType | None: ...
def validate_colorlist(s: Any) -> list[ColorType]: ...
def _validate_color_or_linecolor(
s: Any,
Expand Down Expand Up @@ -140,6 +141,7 @@ def validate_fillstylelist(
) -> list[Literal["full", "left", "right", "bottom", "top", "none"]]: ...
def validate_markevery(s: Any) -> MarkEveryType: ...
def _validate_linestyle(s: Any) -> LineStyleType: ...
def _validate_linestyle_or_None(s: Any) -> LineStyleType | None: ...
Comment thread
konmenel marked this conversation as resolved.
def validate_markeverylist(s: Any) -> list[MarkEveryType]: ...
def validate_bbox(s: Any) -> Literal["tight", "standard"] | None: ...
def validate_sketch(s: Any) -> None | tuple[float, float, float]: ...
Expand Down