Weekly Project News

Archives
Subscribe

Weekly GitHub Report for Matplotlib: October 27, 2025 - November 03, 2025 (12:03:54)

Weekly GitHub Report for Matplotlib

Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.


Table of Contents

  • I. News
    • 1.1. Recent Version Releases
    • 1.2. Other Noteworthy Updates
  • II. Issues
    • 2.1. Top 5 Active Issues
    • 2.2. Top 5 Stale Issues
    • 2.3. Open Issues
    • 2.4. Closed Issues
    • 2.5. Issue Discussion Insights
  • III. Pull Requests
    • 3.1. Open Pull Requests
    • 3.2. Closed Pull Requests
    • 3.3. Pull Request Discussion Insights
  • IV. Contributors
    • 4.1. Contributors

I. News

1.1 Recent Version Releases:

The current version of this repository is v3.10.1

1.2 Version Information:

Released on February 27, 2025, this first bugfix update of the 3.10.x series addresses multiple issues including improved handling of array alpha in interpolation, removal of md5 to support FIPS compliance, fixes for pyplot.matshow and Axes positioning, adjustments to polar plot titles, GTK4 version gating, and warnings for scatter plot color conflicts, alongside various documentation enhancements.

II. Issues

2.1 Top 5 Active Issues:

We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.

  1. [Bug]: Axes.grouped_bar() with non-string orientation (e.g., NumPy array) raises ambiguous truth-value error instead of clean ValueError: This issue reports that passing a non-string value, such as a NumPy array, to the orientation parameter in Axes.grouped_bar() causes an ambiguous truth-value error instead of a clear and informative ValueError. The root cause is that _api.check_in_list() performs elementwise comparisons that fail when given arrays, and the proposed fix is to add an early type check to raise a proper ValueError before calling _api.check_in_list(), aligning the behavior with other Matplotlib APIs.

    • The comments discuss that integers and None already raise clear ValueErrors in check_in_list(), but NumPy arrays cause ambiguous truth-value errors due to how elementwise comparisons work in NumPy. It is agreed that this issue cannot be fixed in NumPy itself and should be handled in _check_in_list. Although this is considered an edge case rarely encountered by users, a simple fix was proposed and implemented to add a type guard, preventing confusing errors without significant overhead.
    • Number of comments this week: 7
  2. [Bug]: spurious test failures: This issue reports spurious test failures encountered during the rebuilding of openSUSE Tumbleweed, specifically involving an image comparison failure in a test related to the gc package update and a hanging test with GTK3 backends after updating xkeyboard-config. The user is puzzled by these failures as they do not see a direct connection between these packages and matplotlib, and requests investigation into these persistent, non-random test issues.

    • The comments suggest that the test_getattr failure likely stems from GTK3 being affected by the new xkeyboard-config version and recommend testing the import of the GTK3 backend directly in Python. The large image comparison RMS error hints at a missing rasterized image possibly due to external dependencies like Inkscape or gdk-pixbuf2 changes, with a suggestion to check downloaded test results and consider recent fixes related to those components.
    • Number of comments this week: 3
  3. [Bug]: Mismatch in documented default behaviour of pcolormesh 'snap': This issue reports a discrepancy between the documented default value of the snap parameter in the pcolormesh function and its actual default behavior in recent Matplotlib versions. The documentation states the default is False, but due to a temporary addition of pcolormesh.snap to the default rcParams, the effective default behavior is now True, causing confusion especially when plotting with transparency.

    • The comment clarifies that the change in default behavior was intentional and documented in the Matplotlib 3.4.0 release notes, with the temporary rcParam meant to be removed eventually; the snap=True behavior will persist, and only the documentation needs updating to reflect this change.
    • Number of comments this week: 1

Since there were fewer than 5 open issues, all of the open issues have been listed above.

2.2 Top 5 Stale Issues:

We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.

  1. [Bug]: Misalignment of Labels and Incorrect Density Values in ax.hist() for Categorical Variables: This issue addresses a bug in the ax.hist() function of Matplotlib when used with categorical variables and the density=True parameter, where the density values are incorrectly computed due to the internal conversion of categories to integers and the resulting bin widths not being equal to one. Additionally, the issue highlights a misalignment of x-axis labels, as the function does not position labels at the center of the bars, and there is a lack of clear documentation on how categories are mapped to integers, making it difficult to correctly align the labels.
  2. [MNT]: Ease building just one Sphinx Gallery example file: This issue addresses the difficulty of efficiently building a single Sphinx Gallery example file, which currently requires lengthy build times or cumbersome workarounds that still produce many warnings. The author proposes improving the documentation with practical tips and adjusting the Sphinx Gallery configuration to streamline this process, making it easier for developers—especially beginners—to preview and develop individual gallery entries more quickly.
  3. [ENH]: Parse "\limits" in mathtext: This issue addresses a problem in the matplotlib mathtext module where the LaTeX command "\limits" is not recognized and causes a parsing error when rendering mathematical expressions involving integrals. The user expects the "\limits" command to properly position subscripts and superscripts above and below the integral symbol, but instead encounters a ValueError due to the unknown symbol, indicating that support for parsing "\limits" needs to be added or improved.
  4. [ENH]: Fix precision displayed by LogFormatter.format_data_short: This issue addresses the lack of precision adjustment in the display of mouse cursor values for logarithmic scale formatters within the toolbar, which currently only exists for linear scale formatters. The user suggests implementing a similar feature for log formatters to match the cursor pointing precision, enhancing the consistency and accuracy of displayed data.
  5. [Bug]: ax.transData does not honor data limits: This issue reports a bug in Matplotlib where the transformation ax.transData does not automatically respect the current data limits (xlim and ylim), causing it to use outdated limits when new data are added to the axes. The user highlights that although the documentation implies data limits update automatically, in practice, manual calls to methods like set_xlim or set_ylim are required to refresh these limits, leading to confusion and inconsistent behavior in coordinate transformations.

2.3 Open Issues

This section lists, groups, and then summarizes issues that were created within the last week in the repository.

Issues Opened This Week: 4

Summarized Issues:

  • Test failures and hangs after unrelated package updates: This topic covers spurious test failures and prolonged hangs occurring during openSUSE Tumbleweed rebuilds after updates to unrelated packages like gc and xkeyboard-config. The failures include an image comparison error in test_backend_svg.py and a hang in test_getattr.py with GTK3 backends, both persisting across multiple rebuilds despite the unrelated nature of the updated packages.
  • issues/30703
  • Input validation in Axes.grouped_bar(): This topic addresses the issue where passing a non-string value to the orientation parameter in Axes.grouped_bar() causes an ambiguous truth-value error instead of a clear ValueError. The proposal is to add an early type check to ensure only valid string inputs are accepted, improving error clarity.
  • issues/30706
  • Default value discrepancy for pcolormesh 'snap' parameter: This topic highlights a mismatch between the documented default value of the pcolormesh 'snap' parameter (False) and its actual default behavior (True) in Matplotlib 3.10.1 due to a temporary addition to rcParams. This discrepancy causes confusion, especially when plotting with transparency, and suggests updating either the documentation or the default settings for alignment.
  • issues/30709
  • Hatch list length enforcement in Axes.grouped_bar(): This topic discusses whether Axes.grouped_bar() should require the hatch list length to match the number of datasets or allow automatic cycling of hatches like other style arguments. The issue seeks feedback on the preferred default behavior to balance consistency and user experience.
  • issues/30712

2.4 Closed Issues

This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.

Issues Closed This Week: 2

Summarized Issues:

  • Bounding box calculation and figure sizing issues: This issue highlights that using bbox_inches='tight' in Matplotlib causes inconsistent figure sizing because the bounding box calculation incorrectly excludes zero-height elements without markers. The presence of markers in ax.plot() affects whether a horizontal line is included within the figure boundaries, revealing a problem in how the bounding box is computed.
  • issues/30695
  • Compatibility and import errors with Python and Matplotlib: Installing matplotlib 3.10.7 with Python 3.14 on Windows 11 leads to an ImportError related to the _ctypes module due to a libffi package update, causing a DLL load failure. This problem does not occur with Python 3.13 and is linked to the conda-forge packaging rather than matplotlib itself.
  • issues/30701

2.5 Issue Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.


III. Pull Requests

3.1 Open Pull Requests

This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Opened This Week: 7

Key Open Pull Requests

1. Add testing for rcParams Literal type hints: This pull request adds testing for rcParams Literal type hints in the matplotlib project, including some new tests that were previously missing, as a follow-up to a prior related pull request.

  • URL: pull/30705
  • Merged: No
  • Associated Commits: 3122d, b7018

2. Add type stubs for Axes3D and improve type hints in _AxesBase: This pull request adds a new type stub file for mpl_toolkits.mplot3d.axes3d to provide type definitions for Axes3D, _Quaternion, and get_test_data, while also improving type hints in matplotlib.axes._base by making annotations for _shared_axes and _twinned_axes more explicit.

  • URL: pull/30713
  • Merged: No
  • Associated Commits: e5998, 89e55

3. Fix spacing in r"$\max f$".: This pull request fixes the inconsistent insertion of thin spaces in mathtext expressions involving operators like \max that use over-under subscripts, ensuring spacing is handled consistently as with operators like \sin, and includes related code cleanup and updated tests to reflect these spacing improvements.

  • URL: pull/30715
  • Merged: No
  • Associated Commits: 703c0, feecd

Other Open Pull Requests

  • Normalization Enhancements: This pull request introduces the CenteredAsinhNorm class to automatically center asinh-normalized data around a specified value, typically zero, facilitating symmetric scaling for diverging colormaps by automating the manual calculation of symmetric vmin/vmax values. It also includes type stubs, comprehensive tests, full documentation, and bilingual comments for maintainability.
  • pull/30691
  • Type Hint Improvements: This pull request broadens the type hints for the xy and xytext parameters in Axes.annotate to accept tuple[Any, Any] instead of being restricted to tuple[float, float], thereby allowing datetime-like values and preventing false-positive type errors in type checkers. The change does not affect any runtime behavior.
  • pull/30693
  • Documentation and Policy Updates: This pull request adds an admonition summarizing the AI usage policy with a link to the full policy under the policies and guidelines section on the development landing page, addressing issue #30439. This improves visibility and accessibility of the policy for contributors.
  • pull/30699
  • Bug Fixes for Input Handling: This pull request fixes the function check_in_list() by enabling it to gracefully handle numpy arrays as input, addressing issue #30706. This improves the robustness of the function when dealing with different input types.
  • pull/30714

3.2 Closed Pull Requests

This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Closed This Week: 18

Key Closed Pull Requests

1. FIX: respect animated=True in imshow and avoid drawing animated images in the static background (closes #18985): This pull request addresses the issue where imshow(..., animated=True) did not behave consistently with other animated artists by modifying the Axes.imshow method to add animated images as generic artists rather than to the static background, thereby preventing them from being drawn prematurely and ensuring they are managed correctly during animation, as detailed in issue #18985.

  • URL: pull/30694
  • Merged: No
  • Associated Commits: 16de6, 72c80

2. BUG: raise when creating a MacOS FigureManager outside the main thread: This pull request fixes a crash in matplotlib by adding a check that raises an exception when attempting to create a MacOS FigureManager GUI window outside the main thread, ensuring thread safety in accordance with Cocoa's requirements and including tests to verify the correct exception and warnings are raised.

  • URL: pull/30697
  • Merged: Yes
  • Associated Commits: 060fa, 3c503

3. Fix: replaced fig.show() with plt.show() in event_handling.rst: This pull request addresses a minor documentation correction in the event_handling.rst file by replacing the incorrect fig.show() method with plt.show() to ensure plots display properly when using event callbacks.

  • URL: pull/30704
  • Merged: No
  • Associated Commits: 94aca, 16d6c

Other Closed Pull Requests

  • Documentation improvements and fixes: Multiple pull requests focus on enhancing the documentation by fixing broken links to static images and external projects like pip, adding clarifying comments in header files, and streamlining tutorial content by removing unnecessary instructions. These changes improve readability, reduce build warnings, and make the documentation more user-friendly without altering any code behavior.
  • [pull/30684, pull/30685, pull/30686, pull/30687, pull/30688, pull/30689, pull/30708]
  • Backports to v3.10.x branch: Several pull requests backport important fixes and updates to the v3.10.x branch, including a bug fix for MacOS FigureManager thread errors, documentation fixes for pip links, trove metadata updates for Python 3.14 support, and increased test tolerances for Ghostscript version 10.06. These backports ensure stability and compatibility for users on the maintenance branch.
  • [pull/30711, pull/30688, pull/30689, pull/30698, pull/30700, pull/30702]
  • Code behavior and validation improvements: One pull request improves the Axes.grouped_bar() method by adding an early type check for the orientation parameter to raise a clear ValueError instead of ambiguous NumPy errors. Another fixes the handling of horizontal and vertical lines in tight bounding box calculations by introducing the concept of finite bounding boxes, ensuring correct layout behavior.
  • [pull/30707, pull/30696]
  • Contribution and policy notes: A pull request adds a short contribution note to the README as part of the author's open-source learning journey, while another adds a note linking contributors to the "Restrictions on Generative AI Usage" policy in the developer guide to improve visibility of AI usage expectations.
  • [pull/30710, pull/30692]

3.3 Pull Request Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.


IV. Contributors

4.1 Contributors

Active Contributors:

We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.

If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.

Contributor Commits Pull Requests Issues Comments
timhoffm 17 5 1 37
rcomer 5 3 0 20
ilakkmanoharan 15 2 2 6
QuLogic 10 1 0 13
story645 2 2 1 15
G26karthik 17 0 0 0
tacaswell 4 0 1 6
heinrich5991 3 1 2 3
ksunden 8 0 0 0
ngoldbaum 2 2 1 3

Don't miss what's next. Subscribe to Weekly Project News:
Powered by Buttondown, the easiest way to start and grow your newsletter.