Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Matplotlib: July 07, 2025 - July 14, 2025 (12:03:30)

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 for the 3.10.x series addresses several issues, including respecting array alpha in image interpolation, removing md5 usage for FIPS compliance, and fixing various plotting and figure handling bugs. It also introduces a version gate for GTK4 calls and enhances documentation.

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]: Annotation clipping to rect works, but not when setting xlim: This issue describes a bug in Matplotlib where a text annotation clipped to a rectangular patch (axvspan) does not remain clipped when the x-axis limits are set, causing the text to appear outside the intended clipping area. The problem arises when the xlim is adjusted, which should ideally maintain the clipping effect of the annotation within the specified rectangular patch, but instead, the text becomes visible beyond the new axis limits.

    • The comments discuss different behaviors observed by users with similar setups, questioning whether the rectangle or text should be clipped by the axes. Suggestions include disabling clipping on the rectangle, which affects the visibility of the text. There is a consensus that annotations are not clipped by the axes by default, and there is an expectation that if one element is clipped by another, it should also be clipped by any additional clipping applied to the second element.
    • Number of comments this week: 6
  2. [Bug]: Legend kwarg labelcolor='linecolor' not working properly when facecolor is 'None' : This issue addresses a bug in the Matplotlib library where the labelcolor='linecolor' keyword argument does not function correctly with histtype='step' histograms and scatter plots with facecolor='None', leading to an invisible legend label for the histogram and an IndexError for the scatter plot. The expected behavior is for the legend labels to be visible and correctly colored, without any errors, by intelligently determining the appropriate color attributes to use.

    • The comments discuss potential solutions and improvements, such as using labelcolor='markeredgecolor' for better compatibility, and suggest modifying the code to check both get_facecolor and get_edgecolor methods to avoid errors. There is also a discussion about the handling of facecolor with alpha values and the design choices in Matplotlib regarding histogram types.
    • Number of comments this week: 2
  3. [Bug]: _constrained_layout takes several iterations to converge to expected result: This issue describes a bug in the Matplotlib library where the _constrained_layout function requires multiple iterations to properly scale the axes and include the legend within the figure when the legend is placed outside the axes bounds using bbox_to_anchor. The problem is illustrated with images showing the initial incorrect layout and the expected outcome after several iterations, highlighting the need for a more efficient solution to achieve the desired layout without excessive iterations.

    • A commenter pings a developer for input, expressing concern about the inefficiency of the current solution and suggesting that increasing the default number of iterations is not a viable fix, while noting the lengthy convergence time for this specific case.
    • 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 highlights 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, leading to miscalculated densities as the bin width isn't necessarily 1. Additionally, the issue points out the misalignment of labels, as the function does not position them precisely at the center of the bars, and suggests improvements such as reconsidering density calculations for categorical data and providing clear documentation on the category-to-integer conversion process.
  2. [MNT]: Ease building just one Sphinx Gallery example file: This issue addresses the challenge of efficiently building a single Sphinx Gallery example file, which currently requires a lengthy process through make html or make html-skip-subdirs, often resulting in numerous unhelpful warnings. The proposed solution involves updating the documentation to provide clearer guidance on building individual files and potentially adding a new build target in the Makefile to streamline the process, thereby making it more accessible for developers, especially beginners, who need to frequently preview their work.
  3. [ENH]: Parse "\limits" in mathtext: This issue pertains to a problem encountered in the matplotlib library's mathtext module, where the parsing of LaTeX expressions containing the "\limits" command fails, resulting in a ValueError. The "\limits" command is intended to adjust the positioning of subscripts and superscripts for certain mathematical operators, such as integrals, but currently leads to a parsing error when used, as demonstrated in the provided code example.
  4. [ENH]: Fix precision displayed by LogFormatter.format_data_short: This issue addresses the need to enhance the LogFormatter in a project by ensuring that it displays mouse cursor values with a precision that matches the cursor pointing accuracy, similar to what has been implemented for linear formatters. The problem has been open for a significant amount of time, indicating a need for a solution to align the precision of log formatters with that of linear formatters, although no specific solution has been proposed yet.
  5. [Bug]: ax.transData does not honor data limits: This issue highlights a bug in Matplotlib where the ax.transData transformation does not automatically update to reflect changes in data limits (xlim and ylim) when new data is added to the axes, contrary to what the documentation suggests. The user reports that this discrepancy requires a manual update of data limits using methods like set_xlim or set_ylim to ensure ax.transData uses the latest data limits, which is both confusing and counterintuitive.

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: 6

Summarized Issues:

  • Text Annotation Clipping in Matplotlib: A bug in Matplotlib causes text annotations clipped to a rectangular patch to remain visible beyond the new axis limits when the x-axis limits are set. This behavior is contrary to expectations, as the text should remain clipped by the rectangle even when it falls out of view.
    • issues/30276
  • Text Rendering Discrepancies in Matplotlib: The Matplotlib library faces issues with text rendering, particularly with the PGF backend, due to inconsistencies in passing the Text object to the Renderer.draw_text method. This results in misaligned text, especially for multiline strings, due to differences in handling the original position and alignment versus the x/y coordinates provided.
    • issues/30282
  • Color Distortion in Matplotlib's plot_surface: Using plot_surface with manually specified facecolors in Matplotlib leads to color distortion because of the default shading=True setting. It is suggested that the default should be changed to shade=False when facecolors are provided, or this behavior should be clearly documented to prevent user confusion.
    • issues/30290
  • Deprecation Proposal for RadialLocator in Matplotlib: A proposal in the Matplotlib library suggests deprecating the 'axes' parameter in the RadialLocator constructor. Instead, it is recommended to access self.axis.axes directly to streamline the code.
    • issues/30296
  • Legend Label and IndexError Bugs in Matplotlib: Matplotlib has a bug where the labelcolor='linecolor' keyword argument does not work correctly with histtype='step' histograms and scatter plots with facecolor='None'. This results in an invisible legend label for the histogram and an IndexError for the scatter plot, suggesting a need to check get_edgecolor in addition to get_facecolor.
    • issues/30298
  • Constrained Layout Iteration Bug in Matplotlib: The _constrained_layout function in Matplotlib requires multiple iterations to properly scale the axes and include the legend within the figure when the legend is placed outside the axes bounds using bbox_to_anchor. This results in an initially incorrect plot that only converges to the expected layout after repeated iterations.
    • issues/30300

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:

  • Deprecation Warning in Matplotlib with Pillow 11.3: A deprecation warning is raised by Pillow 11.3 when using the TkAgg backend in Matplotlib due to the deprecated 'mode' parameter in the Image.fromarray function. This parameter is expected to be removed in Pillow 13, and the issue has been addressed in a subsequent pull request.
    • issues/30280
  • Typo in Matplotlib's _axes.py File: A bug in the Matplotlib library's _axes.py file results in an error message lacking a necessary whitespace, causing a typo that reads "orsequence" instead of "or sequence." The reporter has offered to fix this typo as their first contribution to the project.
    • issues/30285

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: 11

Key Open Pull Requests

1. [ENH] Add data parameter in Axes3D.plot: This pull request enhances the Axes3D.plot API in the Matplotlib library by introducing a data parameter and requiring an explicit zs argument, while also replacing positional argument parsing with a new fmt keyword parameter to improve clarity, error handling, and compatibility with 2D-like plots, addressing issue #30238.

  • URL: pull/30270
  • Merged: No
  • Associated Commits: b4686, 58a7d, b2f97, ca062, ef421, ece6b, 809e8, c451c, edb05, 93469, e75e1, 1d8d6, c0b2b, 688e1, 34cd2, 05981, 83157, 98b9c, 0c04c

2. Run subprocess-starting tests on separate runners: This pull request addresses issues with test timeouts in the Matplotlib project by running subprocess-starting tests on separate runners without pytest-xdist parallelization, due to suspected process ID exhaustion or scheduler limitations, particularly affecting Python 3.14 tests, and includes changes such as adding a new pytest marker, setting environment variables to handle buffering issues, and adjusting test configurations for improved performance and output visibility.

  • URL: pull/30278
  • Merged: No
  • Associated Commits: dc674, 07b04, 5a21c, b1841, 70aeb, c8f49

3. Migrate to Pybind11 v3: This pull request aims to migrate the Matplotlib project to Pybind11 version 3 by testing new options without maintaining backward compatibility, including updates such as fixing build issues with the new Pybind11 version, bumping the minimum required version to 3.0.0, removing outdated workarounds, converting to py::native_enum, and switching to smart holders for C++ classes.

  • URL: pull/30291
  • Merged: No
  • Associated Commits: d2d96, 3c73d, 3b645, 33bb8, 1f5f5

Other Open Pull Requests

  • Type Hinting Enhancements in Matplotlib: This topic involves improving type hinting and IDE support by introducing Literal and TypeAlias for configuration-related functions and parameters. The pull requests update type hints for specific functions and add new TypeAlias entries, ensuring backward compatibility.
    • pull/30301
  • Backporting Changes for Matplotlib Methods: These pull requests focus on backporting changes to the Matplotlib library, including adding explicit parameters to methods and reducing pause time in tests. The changes ensure consistency and improved functionality across different versions.
    • pull/30292, pull/30277
  • Logging and Warning Improvements: This pull request addresses the issue of logging a warning when the selected font weight differs from the requested one. It incorporates feedback from a previous pull request and ensures compliance with documentation and testing standards.
    • pull/30272
  • Code and Functionality Corrections: This pull request corrects a typo affecting the mlab fallback functionality for 32-bit systems. It ensures compatibility across systems by adding a test for the csd function and verifying on WASM.
    • pull/30273
  • Shell Script and Artifact Management: This pull request resolves the issue of overdeletion of source images for failing tests by rewriting a shell script. It ensures that expected and actual PDF files are retained and uploaded as artifacts, fixing previous implementation flaws.
    • pull/30284
  • Documentation Updates for Annotation Method: This pull request updates the documentation for the Annotation.__init__() method to clarify potential misalignment issues when using .set_clip_path(). It advises users on setting axis limits before applying the clip path to maintain correct visual behavior.
    • pull/30295
  • Legend Label Color Correction: This pull request addresses an issue where the legend label color was incorrectly displayed for plots with transparent face colors. It implements checks to skip transparent colors and ensures the legend text uses the edge or line color, adding a visual test for verification.
    • pull/30299

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: 15

Key Closed Pull Requests

1. Create events type and update plt.connect and mpl_connect: This pull request introduces new literal types for various event categories such as MouseEventType, KeyEventType, DrawEventType, PickEventType, ResizeEventType, and CloseEventType, updates the mpl_connect function and its pyplot wrapper plt.connect to incorporate these types, and adds an overload for DrawEvent, thereby enhancing the event handling capabilities in the Matplotlib library.

  • URL: pull/30275
  • Merged: Yes
  • Associated Commits: f3e29, 3d7b6, d2adb

2. changed the FAQ link to point to the correct path: This pull request updates the FAQ link in the Matplotlib project to direct users to the correct page, addressing an issue where the link was previously incorrect, and includes two commits that fix both instances of the wrong link, ultimately closing issue #30169.

  • URL: pull/30283
  • Merged: Yes
  • Associated Commits: 1ca21, c6798

3. Backport PR #30233 on branch v3.10.x (Check that stem input is 1D): This pull request involves backporting changes from PR #30233 to the v3.10.x branch of the Matplotlib project, ensuring that the stem input is verified to be one-dimensional.

  • URL: pull/30268
  • Merged: Yes
  • Associated Commits: dd24d

Other Closed Pull Requests

  • Backporting Changes: This topic involves backporting various changes to different branches of the Matplotlib project. The changes include fixing a figure legend issue in stackplots, updating FAQ links, and ensuring documentation compatibility with pybind11 version 3. These backports ensure that the v3.10.x and v3.10.3-doc branches remain up-to-date with important fixes and updates.
    • pull/30269, pull/30287, pull/30288, pull/30293, pull/30294
  • Documentation Updates: Several pull requests focus on updating documentation to reflect recent changes and ensure compatibility. These updates include addressing pybind11 modifications, correcting typographical errors, and updating docstrings to provide better guidance on using certain features. These changes help maintain the accuracy and usability of the Matplotlib documentation.
    • pull/30289, pull/30281, pull/30297
  • Configuration and Error Message Fixes: This topic covers pull requests that address configuration issues and error message formatting. Fixes include replacing invalid configuration values and ensuring error messages are correctly formatted with appropriate whitespace. These changes prevent errors and improve the clarity of error messages for users.
    • pull/30279, pull/30286
  • CI and Testing Improvements: Pull requests under this topic aim to improve the CI process and testing efficiency. Changes include reducing pause times in tests to prevent timeouts and fixing variable quoting errors during image preloading. These improvements help streamline the testing process and ensure reliable CI performance.
    • pull/30271, pull/30274

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
QuLogic 16 9 1 14
jkseppan 27 6 0 1
timhoffm 4 1 1 20
CorenthinZ 25 0 0 0
ayshih 10 3 0 4
anntzer 2 0 0 12
jklymak 5 0 0 9
livlutz 13 0 0 1
rcomer 1 1 0 8
No author found 9 0 0 0

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