René's URL Explorer Experiment


Title: Improve symlog axis ticks by schtandard · Pull Request #27310 · matplotlib/matplotlib · GitHub

Open Graph Title: Improve symlog axis ticks by schtandard · Pull Request #27310 · matplotlib/matplotlib

X Title: Improve symlog axis ticks by schtandard · Pull Request #27310 · matplotlib/matplotlib

Description: PR summary In the current implementation, symlog axes only get major ticks by default. Depending on the data range, this can lead to too few or even no ticks at all. When "subticks" between decades are specified manually, those are sometimes labeled in an unintended manner (when they are at a decade). This PR re-implements the tick placement and formatting for symlog axes to remedy these problems. If I am not mistaken, this closes #17402, closes #18757 and closes #25994. I am submitting this as a PR now to get some general feedback on the approach and pointers if I need to consider anything regarding style or conventions that I missed. If I get a thumbs up, I would polish some things off (like making _SymmetricalLogUtil's methods work with np.arrays and have .firstdec() cache results) before merging. My approach for the tick locator I was aiming for SymmetricalLogLocator to behave identically to LogLocator as long as the data range is outside of the linear part of the scale and extend this reasonably to the linear part if it's present. What I came up with is this (I'm describing the positive half axis here for simplicity, everything works the same on the negative side): Major ticks at decades, where the first decade to be considered for labelling must be at least half the length of a decade from 0 (otherwise there would be infinitely many labeled decades close to 0). That decade receives the decade number 1, the next larger one 2 and so on. 0 gets the "decade" number 0. Values between those decades get interpolated decade numbers. We now have an obvious definition of the number of decades in the data range and can basically copy the logic from LogLocator, the only caveat being that 0 should always receive a tick if it is in the range. In the linear part of the scale, we add the same minor ticks below the first decade as below any other and add the next lower decade as a minor tick. That is, if with base b one gets minor ticks 2 to b-1 between larger decades one gets 1 to b-1 below the first one, effectively producing linear ticks between the first decade and 0. LogFormatter (which is also used for symlog axes) is adapted accordingly. I added a separate field _firstsublabels for placing sublabels below the first decade. As with log axes it can sometimes happen that there is only one major tick with unlabeled minor ticks around it. This is fine (one can still identify the unlabeled positions) as long as the major tick is at some decade and not at 0, which can happen with symlog axes. In that case, we need to label at least one of the minor ticks to allow reading values off the axis. Since both the locator and the formatter need the calculation of the first decade I placed the code regarding this into a helper class _SymmetricalLogUtil. Finally, SymmetricalLogScale is adapted to actually use the new functionality by default. I checked all parameter ranges I could think of and this seems to work out quite nicely. This is how it looks. For comparison, this is how it used to look. Code to reproduce. import numpy as np from matplotlib import pyplot as plt def showcase_scales(axs, *plotargs, **plotkwargs): for ax, scale in zip(axs, ['linear', 'symlog', 'log']): ax.set_yscale(scale) ax.yaxis.grid() ax.plot(*plotargs, **plotkwargs) values = [ np.linspace(3, 150), np.linspace(20, 60), np.linspace(0.5, 12), np.linspace(0.5, 5), np.linspace(0.6, 3), np.linspace(1e-4, 1e-2), np.linspace(0, 40), np.linspace(-0.8, 0.9), np.linspace(-4, 4), np.linspace(-22, 22), np.linspace(0, 0), np.linspace(1, 1), np.linspace(2, 2), np.linspace(10, 10), np.linspace(13, 13), ] fig, axs = plt.subplots(len(values), 3, squeeze=False, sharex=True, figsize=(9, 2 * len(values))) for a, v in zip(axs, values): showcase_scales(a, v) axs[0, 0].set_title('linear') axs[0, 1].set_title('symlog') axs[0, 2].set_title('log') fig.tight_layout() fig.savefig('showcase.png') Requested feedback There are some details regarding which I would like feedback/guidance from you. When computing stride (i.e. the number of decades between major ticks) a possible forced tick at 0 is not considered. This may lead to an off-by-one error regarding numticks (i.e. a stride value smaller by one would have been possible) but I feel like preventing this is not worth the complication of taking it into account. Do you agree? subs=None is equivalent to subs='auto' in LogLocator but to subs=(1.0,) in SymmetricalLogLocator. Is that on purpose? I left it like that. For some reason, base came after linthresh in SymmetricalLogLocator's signature, contrary to most other occurences. In adding linscale I reordered those. While this is strictly a backwards incompatible change (whereas I just appended linscale everywhere else), I don't expect it to have ever been used in an incompatible way: providing base only make sense when transform (the first argument) is not given, so it's most probably always been don by keyword argument, though it is in principle possible to say SymmetricalLogLocator(None, None, 2, 10) to get SymmetricalLogLocator(linthresh=2, base=10). Should I switch it back for backwards compatibility or do we care more about consistent argument order? LogFormatter threw away the sign of any value, even though it is used for negative values with symlog axes. This was no problem because LogFormatterMathtext overwrites __call__ and preserves the sign, so it didn't actually show up on any axis (with the default configuration). I fixed this. Is it fine to just leave it in this PR or should it be a separate one? In test_ticker.py the test TestSymmetricalLogLocator.test_extending() relies on rcParams['axes.autolimit_mode'] being set to round_numbers but this is not set up in the test itself. I assume that this configuration is left in place by some previous test, though I can't tell where. Is this by design or should an rc_context be used, like in some other tests? The checklist below tells me to note API changes (which the new linscale argument to the locator and the formatter as well as the changed default value of SymmetricalLogScale's subs argument qualify as, I think) with a directive and release note, but the linked section does not seem to exist. What do I need to do? PR checklist "closes #0000" is in the body of the PR description to link the related issue new and changed code is tested Plotting related features are demonstrated in an example New Features and API Changes are noted with a directive and release note Documentation complies with general and docstring guidelines

Open Graph Description: PR summary In the current implementation, symlog axes only get major ticks by default. Depending on the data range, this can lead to too few or even no ticks at all. When "subticks" betw...

X Description: PR summary In the current implementation, symlog axes only get major ticks by default. Depending on the data range, this can lead to too few or even no ticks at all. When "subticks&qu...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:947711d4-9fc5-389d-2902-8bfbe155f82d
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8FDC:362D3E:854F68:B30396:6A528F5D
html-safe-nonce640e3c828b446d31d04c4e46d17423a833faaa9084546a6e2a306c1b4069806f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RkRDOjM2MkQzRTo4NTRGNjg6QjMwMzk2OjZBNTI4RjVEIiwidmlzaXRvcl9pZCI6IjY2OTQxNTI4MzU1MzY0MjQ3OTciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac897fdd41d557e3715713fab5e4d4677b29099b66a0336c0eaf179ba054d069d7
hovercard-subject-tagpull_request:1597870820
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/27310/files
twitter:imagehttps://avatars.githubusercontent.com/u/23075534?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/23075534?s=400&v=4
og:image:altPR summary In the current implementation, symlog axes only get major ticks by default. Depending on the data range, this can lead to too few or even no ticks at all. When "subticks" betw...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb
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
release07a982c1d40157c619b364352b704c3ce66bb332
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/matplotlib/matplotlib/pull/27310/changes#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmatplotlib%2Fmatplotlib%2Fpull%2F27310%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%2F27310%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/27310/changes
Reloadhttps://github.com/matplotlib/matplotlib/pull/27310/changes
Reloadhttps://github.com/matplotlib/matplotlib/pull/27310/changes
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
matplotlib https://github.com/matplotlib
matplotlibhttps://github.com/matplotlib/matplotlib
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
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 408 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
schtandardhttps://github.com/schtandard
matplotlib:mainhttps://github.com/matplotlib/matplotlib/tree/main
schtandard:symlog_tickshttps://github.com/schtandard/matplotlib/tree/symlog_ticks
Conversation 92 https://github.com/matplotlib/matplotlib/pull/27310
Commits 49 https://github.com/matplotlib/matplotlib/pull/27310/commits
Checks 38 https://github.com/matplotlib/matplotlib/pull/27310/checks
Files changed 13 https://github.com/matplotlib/matplotlib/pull/27310/files
Improve symlog axis ticks https://github.com/matplotlib/matplotlib/pull/27310/changes#top
Show all changes 49 commits https://github.com/matplotlib/matplotlib/pull/27310/files
8217fe0 Do not discard sign of tick value schtandard Mar 15, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/8217fe09599706a7d8e9029fe6dc2ea444c7ff3b
27f3482 Improve some log ticker details schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/27f3482194cbd364f141837f29b77014e7bbf647
6a28eff Improve symlog ticker schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/6a28effff07f6266978f5d6039216feb09917146
907a5eb Update symlog tests schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/907a5eb64d72e7d9b3a8f0432b896451d4da9cf8
2df2b64 Rename new rcParam schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/2df2b64a3e6d50e32bec99c840db22cb7ddb139d
97063d5 Streamline subtick determination schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/97063d52d4198390409b7a15b4775401f2ae1fbd
e9be32d Fix missing stub parameter schtandard Mar 16, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/e9be32dee52cb71a0a1e5723ee9cb09663535772
42772e5 Remove legacy behavior schtandard Jun 24, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/42772e56bca3b30f549d98fcaa70b0714051a94c
12a2b26 Add new parameters backward-compatibly schtandard Jun 24, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/12a2b2683ee8e83d73373a43b8baabccb20c64e1
aa4e895 Note API changes schtandard Jun 24, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/aa4e895178aa46946b5f8c2f5f7a178d86ef5bfb
d959af3 Fix rst syntax schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/d959af30b0784bab4d53f307fd5ce48263004510
b39a71c Rename _symlog to _is_symlog schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/b39a71c738e4afd8690f9741a042645b829dd677
67c5ef7 Instantiate _symlogutil in init() schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/67c5ef7d60d466f264ee29c0b910e077a59ab72b
5bb8291 Relay changed base value to _symlogutil schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/5bb8291c9c89b0f8f446fe56d2b19fce5f2924c9
1b7b6ee Add versioning directives schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/1b7b6ee66e2af1f3a2fc2decb58809364aaa0b2e
1a8bd23 Create _symlogutil before using set_base() schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/1a8bd23e8f7600440413ecfb7c8f446330f9b150
605765b Delay _symlogutil instantiation schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/605765b927e6f169aa6c428a2cf52d3c1766b90c
6fdc786 Use minor ticks in symlog test schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/6fdc786a7c27df9ed4dadf3fe3a2c3e976de68ac
f51ea20 Update test output schtandard Jun 25, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/f51ea206ac56bac4daf5b069428da8b16b260e65
f4f2108 Simplify _SymmetricalLogUtil.init() schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/f4f210899e10c51ac87b49cc8dd62bba890517aa
ccaf6ed Make _symlogutil instantiation more explicit schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/ccaf6edd21718329fb65b52c632fe9a1cf9d7e1b
ebb6a30 Simplify calculation syntax schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/ebb6a304dda24105b40a68ee1aad7db038c2c284
7cb1be8 Remove docstring remnants schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/7cb1be81cde39816818bb0523e119d92f15151cd
b2b2dd9 Explain normalized position and decade number schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/b2b2dd90c4c55d537943e686ee0e909d99db2388
ce3151f Streamline firstdec usage schtandard Jun 26, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/ce3151f8777929a83a3245ab481445c8e8c9499e
18896bd Rename variables consistently schtandard Jun 27, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/18896bd4922ff1d420850f2cbb48c2ad31c29c2a
a8957ee Update stub patterns schtandard Jun 27, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/a8957ee4656e39c68952ae155838a9cd2e405ebb
8353830 Remove spurious stub default values schtandard Jun 27, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/8353830c2ad4733f9c379e97df800938c9d38810
2a13651 Choose clearer method names schtandard Jun 30, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/2a13651da154657c3c4e26e2450cc304e84d8662
35621af Motivate threshold for acceptable tick positions schtandard Jun 30, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/35621af30c143c9462f7776b25a38f979e2de99c
420e057 Describe function of helper coordinates first schtandard Jun 30, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/420e057a7a9f2c1b9a9b2938349b7f204c6f19da
03fcaa2 Include ASCII drawing relating coordinate systems schtandard Jul 1, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/03fcaa20da8a85baf941abd6c7b49445962e18d5
5615500 Instantiate symlog formatter with all parameters schtandard Jul 1, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/56155003fd5fe7a6c19c4743175ca4c386cd5e3a
89985c3 Convert _SymmetricalLogUtil to a mixin schtandard Jul 1, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/89985c3f94113335ba1b705c8105acb1cb93c86c
1b38253 Make mixin methods private schtandard Jul 1, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/1b3825364eb6cd982f0de76fef6be8cadf6c4419
9962282 Document where mixin is used schtandard Jul 2, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/9962282cbe85a03c477aec080edd6275b4169895
b4547c8 Avoid spurious check schtandard Jul 2, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/b4547c8f7254b2c0a235c55242022bda49f652a6
9ad864b Use individual parameters rather than transform schtandard Jul 2, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/9ad864b7613aeb4f4286de9b28a764e308a41758
c2f1de2 Simplify _is_symlog test schtandard Jul 3, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/c2f1de204e0b9e5bb28153939f2f479ff1f89f4c
69a28b8 Fix changed attribute name schtandard Jul 3, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/69a28b8c012cd90797f014dbfc5bce29b5f8a849
f1572f8 Register missing _SymmetricalLogMixin warning schtandard Jul 3, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/f1572f8919ceb3c9727a7246f416a6d77625915b
ec32280 Add tests for the mixin methods schtandard Jul 5, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/ec3228008b728ce1db68314a95b3e278b34d511d
0e89165 Fix rst markup and typos schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/0e89165664ca04fa7395ae7d39294720575bf81d
97488ea Improve docstring phrasing schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/97488ea8b868d02176ae570372e242ed644c7c98
d243c3f Document all possible values of subs schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/d243c3f74a01afa50c20e2279c22c6b5b5a9cb14
6459a7e Use mpl20 style in modified test schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/6459a7e4243c149589208a55d3d47f8fad8b12a6
ac60281 Optimize modified png images using oxipng schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/ac602813eceb60fb0b070d0b452864fb61324c07
b7217a3 Clarify release note schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/b7217a349537963409e9d707b608538d1cac2c85
81749a8 Add example plot schtandard Jul 10, 2026 https://github.com/matplotlib/matplotlib/pull/27310/commits/81749a87009d4305a7158f029d3bac10ea866d52
Clear filters https://github.com/matplotlib/matplotlib/pull/27310/files
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
27310-BW.rst https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fe65a200e3f36e285dd133329e0c6d71b0e9fa3d1ff2db8eb13c457631418c75
missing-references.json https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-53270b1bed23576215e9a53ffec2bf77529d10b47d7f007bacd462f208ea2401
improved_symlog_ticks.rst https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-9f2559536c549c964ce0b3d371a6f359b5f89781fac0af8859043b8c485d6226
scale.py https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
scale.pyi https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-d1fe459ad1dbecb98dcf4b11d5e38fd551c3cf531d70dd58542ffdbbdaa0fee1
symlog.pdf https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-bbee0468426257211d0de3d4a2b392d1ccbff4e70997f7923bb710455de0d439
symlog2.pdf https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-78135f44647e5514cb5717c04a74dbe8d68d1abb294dea69f422c1c865a93669
test_axes.py https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-ef5144bd27a700deb760ef56ccf51dc6fcfe86723f9ffa84df7f024985bf3ee7
test_ticker.py https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fd4f809a4a2ca8b97875eff013bac232c55ca3f92f165117f778960ca1795869
ticker.py https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-ffc88dbb928475229d0fc50ae389ef3f0dabc9c5b8abf42b6eb7a0af28afdb66
ticker.pyi https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-9e5a9e5464f7ae8c955576c148959962faf4fe31043e293f161c067be8c0f788
scale3d_all_scales.png https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-30556163f7dc79b803f1074d63fc8655b0c5301b17f6450844a8e37d7dddcb3a
scale3d_symlog_params.png https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-3530e357edacbe5e1218caaf6cfa50ad8910506f5dc7692f29933eb8b0b27631
doc/api/next_api_changes/behavior/27310-BW.rsthttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fe65a200e3f36e285dd133329e0c6d71b0e9fa3d1ff2db8eb13c457631418c75
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/doc/api/next_api_changes/behavior/27310-BW.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
doc/missing-references.jsonhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-53270b1bed23576215e9a53ffec2bf77529d10b47d7f007bacd462f208ea2401
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/doc/missing-references.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-53270b1bed23576215e9a53ffec2bf77529d10b47d7f007bacd462f208ea2401
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-53270b1bed23576215e9a53ffec2bf77529d10b47d7f007bacd462f208ea2401
doc/release/next_whats_new/improved_symlog_ticks.rsthttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-9f2559536c549c964ce0b3d371a6f359b5f89781fac0af8859043b8c485d6226
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/doc/release/next_whats_new/improved_symlog_ticks.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
QuLogichttps://github.com/QuLogic
Jul 10, 2026https://github.com/matplotlib/matplotlib/pull/27310/changes#r3555885975
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
schtandardhttps://github.com/schtandard
Jul 10, 2026https://github.com/matplotlib/matplotlib/pull/27310/changes#r3557601956
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
lib/matplotlib/scale.pyhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/scale.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-aa9ad5f5699f4aead65ab741dc9b34f6de86cbfe85fe6ebbc0927b38bbb775d9
lib/matplotlib/scale.pyihttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-d1fe459ad1dbecb98dcf4b11d5e38fd551c3cf531d70dd58542ffdbbdaa0fee1
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/scale.pyi
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-d1fe459ad1dbecb98dcf4b11d5e38fd551c3cf531d70dd58542ffdbbdaa0fee1
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-d1fe459ad1dbecb98dcf4b11d5e38fd551c3cf531d70dd58542ffdbbdaa0fee1
lib/matplotlib/tests/baseline_images/test_axes/symlog.pdfhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-bbee0468426257211d0de3d4a2b392d1ccbff4e70997f7923bb710455de0d439
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/tests/baseline_images/test_axes/symlog.pdf
Open in desktop https://desktop.github.com
lib/matplotlib/tests/baseline_images/test_axes/symlog2.pdfhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-78135f44647e5514cb5717c04a74dbe8d68d1abb294dea69f422c1c865a93669
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/tests/baseline_images/test_axes/symlog2.pdf
Open in desktop https://desktop.github.com
lib/matplotlib/tests/test_axes.pyhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-ef5144bd27a700deb760ef56ccf51dc6fcfe86723f9ffa84df7f024985bf3ee7
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/tests/test_axes.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-ef5144bd27a700deb760ef56ccf51dc6fcfe86723f9ffa84df7f024985bf3ee7
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-ef5144bd27a700deb760ef56ccf51dc6fcfe86723f9ffa84df7f024985bf3ee7
lib/matplotlib/tests/test_ticker.pyhttps://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fd4f809a4a2ca8b97875eff013bac232c55ca3f92f165117f778960ca1795869
View file https://github.com/matplotlib/matplotlib/blob/81749a87009d4305a7158f029d3bac10ea866d52/lib/matplotlib/tests/test_ticker.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/matplotlib/matplotlib/pull/27310/{{ revealButtonHref }}
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fd4f809a4a2ca8b97875eff013bac232c55ca3f92f165117f778960ca1795869
https://github.com/matplotlib/matplotlib/pull/27310/changes#diff-fd4f809a4a2ca8b97875eff013bac232c55ca3f92f165117f778960ca1795869
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
Please reload this pagehttps://github.com/matplotlib/matplotlib/pull/27310/changes
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.