René's URL Explorer Experiment


Title: Clarify color priorities in collections by efiring · Pull Request #18480 · matplotlib/matplotlib · GitHub

Open Graph Title: Clarify color priorities in collections by efiring · Pull Request #18480 · matplotlib/matplotlib

X Title: Clarify color priorities in collections by efiring · Pull Request #18480 · matplotlib/matplotlib

Description: PR Summary Color handling in collections is confusing: there are faces and edges, each of which can have a fixed color or a mapped color. Fixed colors (which can be single specifications or arrays matching the elements in the collection) are always available via initialization with defaults. If the collection has a data array set, then it will be used to map colors for edges and/or faces, depending on how their respective fixed color attributes are set. The purpose of this PR is to clarify the logic by consolidating it in a private function. This closes #1302, and is an alternative to #12226. Edited, 2020-09-25 Working with the collections code is complicated by the aliasing combined with the subclassing. Here's how it looks to me: The direct effect of the aliasing is to generate additional setters and getters for all of the aliases. This is done in the Collection base class when the module is imported. All of these additional getters and setters are inherited by subclasses. The main motivation for the aliasing is to allow singular and plural forms of properties like colors, but abbreviations are also provided. We want to move, though, towards favoring the singular forms, for consistency with things like Patches and Line2D objects. The directly coded setters and getters are all singular; the aliases are plural or abbreviated. Related private variables are a mixed bag, some singular (e.g., _original_facecolor), others plural (e.g., _facecolors). The signature of Collection.__init__ includes a trailing **kwargs after a long list of explicit keyword arguments, all of which are presently still the plural form. When keywords are supplied to the __init__ of a subclass, which always either inherits or calls Collection.__init__, any of those keywords that match the explicit signature are handled first, along with any un-supplied defaults from the signature. Then, any that remain are handled through the update method inherited from Artist, which calls the setter, if any, matching the name of the kwarg. For example, if the supposedly favored 'facecolorkwarg is supplied, the initialization will first callset_facecolorwith the default from the signature (named 'facecolors'), and then it will callset_facecolor` again with the value supplied via the 'facecolor' kwarg. The purpose of subclassing is to customize a base class, which by itself is typically not usable. The customization can be via adding functionality (new methods), by overriding methods to modify their behavior, or by changing default values. New methods lack aliases unless they are explicitly generated, either directly, or via a decorator on the subclass. Overridden methods are problematic because the aliases are still there, but they point to the implementations in the base class, not to the the overrides in the subclass. Defaults usually fall into one of two categories: fixed values, like 'black', and values taken from rcParams. The former are unambiguous; the latter can be implemented so that the values are frozen at import time, or so that they are taken at or near the time of instantiation of an object. The latter is preferred. In the context of aliased collection properties, though, this means that they need to be retrieved by a method of the subclass, which is called by the setter defined in Collection. The way to minimize confusion and clutter with argument handling in the subclass is to let **kwargs handle everything that does not require a subclass-specific fixed default. I think this PR is now consistent with the above points with respect to LineCollection. A possible objection is that by trimming down the signature of LineCollection.__init__, we are breaking any code using positional calling for properties that were in the signature. I think we should move in this direction anyway, making such properties keyword-only. I have added a compatibility shim with a deprecation warning to handle existing code. It also appears to me that confusion could be reduced with no backwards incompatibility for public attributes if we were to change all the signature forms to singular ('facecolors' -> 'facecolor'), and similarly for the private attributes that are still plural. PR Checklist Has pytest style unit tests (and pytest passes). Is Flake 8 compliant (run flake8 on changed files to check). New features are documented, with examples if plot related. Documentation is sphinx and numpydoc compliant (the docs should build without error). Conforms to Matplotlib style conventions (install flake8-docstrings and pydocstyle<4 and run flake8 --docstring-convention=all). New features have an entry in doc/users/next_whats_new/ (follow instructions in README.rst there). API changes documented in doc/api/next_api_changes/ (follow instructions in README.rst there).

Open Graph Description: PR Summary Color handling in collections is confusing: there are faces and edges, each of which can have a fixed color or a mapped color. Fixed colors (which can be single specifications or arrays ...

X Description: PR Summary Color handling in collections is confusing: there are faces and edges, each of which can have a fixed color or a mapped color. Fixed colors (which can be single specifications or arrays ...

Opengraph URL: https://github.com/matplotlib/matplotlib/pull/18480

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:c3a069b9-4c4b-0ddf-5555-bc924db47714
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idE89E:104E11:277F226:3860BC2:6A510D62
html-safe-noncecb02f764d2a65140c92ef6fc704a711629964a655fde5ff450830db68673aa6d
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODlFOjEwNEUxMToyNzdGMjI2OjM4NjBCQzI6NkE1MTBENjIiLCJ2aXNpdG9yX2lkIjoiNjUwNzUxOTQwODI2MDMyMDYxMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac36a37d4be533142bf36042d7b8ed3e18ab1668038128165c77478642d47cefc6
hovercard-subject-tagpull_request:486808279
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/matplotlib/matplotlib/pull/18480/files
twitter:imagehttps://avatars.githubusercontent.com/u/85125?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/85125?s=400&v=4
og:image:altPR Summary Color handling in collections is confusing: there are faces and edges, each of which can have a fixed color or a mapped color. Fixed colors (which can be single specifications or arrays ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb076e100febaa00374cd89239f915d00dd3187f7c68b12bc2b7688181305344d
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git
octolytics-dimension-user_id215947
octolytics-dimension-user_loginmatplotlib
octolytics-dimension-repository_id1385122
octolytics-dimension-repository_nwomatplotlib/matplotlib
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1385122
octolytics-dimension-repository_network_root_nwomatplotlib/matplotlib
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2d129404fc45ea64edb1b98567c53e55b395536f
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/matplotlib/matplotlib/pull/18480/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fpull%2F18480%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fpull%2F18480%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=matplotlib%2Fmatplotlib
Reloadhttps://github.com/matplotlib/matplotlib/pull/18480/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/18480/files
Reloadhttps://github.com/matplotlib/matplotlib/pull/18480/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
matplotlib https://github.com/matplotlib
matplotlibhttps://github.com/matplotlib/matplotlib
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
Notifications https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Fork 8.4k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Star 23k https://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib
Code https://github.com/matplotlib/matplotlib
Issues 1.1k https://github.com/matplotlib/matplotlib/issues
Pull requests 410 https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality 0 https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
Code https://github.com/matplotlib/matplotlib
Issues https://github.com/matplotlib/matplotlib/issues
Pull requests https://github.com/matplotlib/matplotlib/pulls
Actions https://github.com/matplotlib/matplotlib/actions
Projects https://github.com/matplotlib/matplotlib/projects
Wiki https://github.com/matplotlib/matplotlib/wiki
Security and quality https://github.com/matplotlib/matplotlib/security
Insights https://github.com/matplotlib/matplotlib/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fmatplotlib%2Fmatplotlib%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fmatplotlib%2Fmatplotlib%2Fissues%2Fnew%2Fchoose
QuLogichttps://github.com/QuLogic
matplotlib:masterhttps://github.com/matplotlib/matplotlib/tree/master
efiring:pcolor_edgeshttps://github.com/efiring/matplotlib/tree/pcolor_edges
Conversation 58 https://github.com/matplotlib/matplotlib/pull/18480
Commits 1 https://github.com/matplotlib/matplotlib/pull/18480/commits
Checks 0 https://github.com/matplotlib/matplotlib/pull/18480/checks
Files changed https://github.com/matplotlib/matplotlib/pull/18480/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
Clarify color priorities in collections https://github.com/matplotlib/matplotlib/pull/18480/files#top
Show all changes 1 commit https://github.com/matplotlib/matplotlib/pull/18480/files
4c3d644 Clarify color priorities in collections efiring Sep 14, 2020 https://github.com/matplotlib/matplotlib/pull/18480/commits/4c3d6449249a9e4790865f2a7e825be591581958
Clear filters https://github.com/matplotlib/matplotlib/pull/18480/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
collection_color_handling.rst https://github.com/matplotlib/matplotlib/pull/18480/files#diff-e98768ca2b75e889893ca125cf77d94007dc012fa25d6a50b629c4e450f8df6b
_axes.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-608e2a1bf3d32fd631b0763599a3334d59822c11cb4fec1fa7398c9714592900
cm.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-76cc27a01fed07ec3907a9ba6bc11abf6895968032ba148d366e6f13f8b4fccd
collections.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
patches.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-03b74bfefbb7d4eca2804f274825899d191f8bacdbe99ea973d88925f15d1169
test_collections.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-6862748ea80410b218b68ce4a5af65b38140420e1e408e76be5de3d241d34be6
art3d.py https://github.com/matplotlib/matplotlib/pull/18480/files#diff-21a889bd7f4e011757170a6a94b732dc543121b7580141ea5f9e82132c5f1c9f
doc/users/next_whats_new/collection_color_handling.rsthttps://github.com/matplotlib/matplotlib/pull/18480/files#diff-e98768ca2b75e889893ca125cf77d94007dc012fa25d6a50b629c4e450f8df6b
View file https://github.com/efiring/matplotlib/blob/4c3d6449249a9e4790865f2a7e825be591581958/doc/users/next_whats_new/collection_color_handling.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18480/{{ revealButtonHref }}
lib/matplotlib/axes/_axes.pyhttps://github.com/matplotlib/matplotlib/pull/18480/files#diff-608e2a1bf3d32fd631b0763599a3334d59822c11cb4fec1fa7398c9714592900
View file https://github.com/efiring/matplotlib/blob/4c3d6449249a9e4790865f2a7e825be591581958/lib/matplotlib/axes/_axes.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18480/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-608e2a1bf3d32fd631b0763599a3334d59822c11cb4fec1fa7398c9714592900
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-608e2a1bf3d32fd631b0763599a3334d59822c11cb4fec1fa7398c9714592900
lib/matplotlib/cm.pyhttps://github.com/matplotlib/matplotlib/pull/18480/files#diff-76cc27a01fed07ec3907a9ba6bc11abf6895968032ba148d366e6f13f8b4fccd
View file https://github.com/efiring/matplotlib/blob/4c3d6449249a9e4790865f2a7e825be591581958/lib/matplotlib/cm.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18480/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-76cc27a01fed07ec3907a9ba6bc11abf6895968032ba148d366e6f13f8b4fccd
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-76cc27a01fed07ec3907a9ba6bc11abf6895968032ba148d366e6f13f8b4fccd
lib/matplotlib/collections.pyhttps://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
View file https://github.com/efiring/matplotlib/blob/4c3d6449249a9e4790865f2a7e825be591581958/lib/matplotlib/collections.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/18480/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
timhoffmhttps://github.com/timhoffm
Sep 23, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r493896321
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
efiringhttps://github.com/efiring
Sep 26, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r495334805
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
timhoffmhttps://github.com/timhoffm
Sep 23, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r493905294
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
efiringhttps://github.com/efiring
Sep 25, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r495322972
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
timhoffmhttps://github.com/timhoffm
Sep 23, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r493907610
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
efiringhttps://github.com/efiring
Sep 25, 2020https://github.com/matplotlib/matplotlib/pull/18480/files#r495324382
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
https://github.com/matplotlib/matplotlib/pull/18480/files#diff-0563f83260b79acbd260c8f0207b01ba8182df37bf2ccd9216d9a3c6a70cbf29
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/18480/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.