Skip to content

[MNT]: Refactor kwargs of Tick constructor  #26008

@anntzer

Description

@anntzer

Summary

Currently, the Tick constructor smashes together kwargs specific to it, kwargs for the tickmarkers, for the labels, and for the gridline:

    def __init__(
        self, axes, loc, *,  # global
        size=None,  # tickmarker property
        width=None,  # tickmarker property
        color=None,  # global
        tickdir=None,  # tickmarker (not a property)
        pad=None,  # global
        labelsize=None,  # label property
        labelcolor=None,  # label property
        labelfontfamily=None,  # label property
        zorder=None,  # global
        gridOn=None,  # gridline (property: ~visible)
        tick1On=True,  # tick (property, but specific to each tick)
        tick2On=True,  # tick (property, but specific to each tick)
        label1On=True,  # label (property, but specific to each label)
        label2On=False,  # label (property, but specific to each label)
        major=True,  # global
        labelrotation=0,  # label property
        grid_color=None,  # grid property
        grid_linestyle=None,  # grid property
        grid_linewidth=None,  # grid property
        grid_alpha=None,  # grid property
        **kwargs,  # grid properties
    ):

The remaining kwargs are implicitly assumed to all start with "grid_" and further interpreted as grid properties (via grid_kw = {k[5:]: v for k, v in kwargs.items()}) -- note that this prefix is internally added by Axis.grid() to kwargs passed to it.

Proposed fix

We should at least check whether remaining kwargs indeed start with "grid_" and error out if that's not the case (Probably few people actually manually construct Ticks, but Tick(abcdecolor="k")) should certainly not be interpreted as Tick(grid_color="k") anyways.)

It may make sense to try to group the kwargs a bit more and not try to repeat all relevant properties in the Tick constructor, e.g. (not writing out the defaults)

def __init__(
    self, axes, loc, *,
    major, tickdir, pad, color, zorder,  # global
    tick_props, tick1On, tick2On,  # tick properties
    label_props, label1On, label2On,  # label properties
    grid_props,  # grid properties
):

(probably kwargs could be normalized in this form as soon as one populates Axis._major_tick_kw/_minor_tick_kw)

Inspired by #25910.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy