Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Matplotlib: May 19, 2025 - May 26, 2025 (12:01:13)

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 improvements in image handling, security enhancements by removing md5 usage, and fixes for plot handling and positioning. Additionally, it introduces a version gate for GTK4 calls and raises warnings for specific scatter plot configurations, 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. [Doc]: Too much stuff in top level navigation.: This issue discusses the overcrowding of the top-level navigation in the Matplotlib documentation, suggesting that some sections like "Plot Types" and "Releases" could be relocated or renamed to streamline user experience. The author proposes changes to the navigation structure, drawing comparisons with other projects like Pandas and NumPy, and suggests that the "Reference" section could be renamed to "API" for clarity.

    • The comments reveal a debate on the necessity of certain navigation items, with some contributors arguing for the removal or integration of the "Tutorials" section into the "User Guide" due to its unclear purpose. There is also a discussion on the importance of having "Contribute" and "Releases" easily accessible, with suggestions to improve the navigation structure by possibly adopting a more organized approach like the Diataxis framework. Additionally, there is a call for better tracking of user interactions to inform these decisions.
    • Number of comments this week: 29
  2. [Bug]: Layout Managers are confused by complex arrangement of sub-figures and gridspec's: This issue describes a bug in the Matplotlib library where layout managers are not handling complex arrangements of sub-figures and gridspecs correctly, resulting in inconsistent and incorrect sizing of axes in generated images. The user provides a code snippet that reproduces the problem and notes that while some layouts produce identical images, others have incorrect axis sizes or overlapping decorations.

    • The comments discuss similar issues with layout management, suggesting that the problem may be related to how constraints are set up and solved. Various code snippets are shared to illustrate the problem and potential workarounds, with one commenter noting that the issue might be due to the constraint solver's limitations. Another commenter mentions a related bug that has an easy fix, indicating ongoing efforts to address these layout issues.
    • Number of comments this week: 4
  3. [Doc]: new color documentation should go into user docs: This issue addresses the need to update the Matplotlib documentation by moving or adding the color sequences example from the gallery to the user documentation section to enhance accessibility and comprehensiveness. The goal is to ensure that core features are well-documented in the user guide rather than being scattered across different sections, making it easier for users to find and utilize color references effectively.

    • The comments discuss the relationship between this issue and previous documentation changes, with some suggesting it overlaps with another issue. Contributors share their experiences with existing color references and express the need for comprehensive documentation in the user guide. There is also a discussion about the potential for using tagging mechanisms outside the gallery to improve navigation, and a plan to make a pull request after related changes are completed.
    • Number of comments this week: 3
  4. [ENH]: Dark Mode for VS Code: This issue is about a user requesting guidance on how to contribute a new style configuration that better aligns with the VS Code Dark Mode color scheme to the Matplotlib project. The user has customized their rcParams to achieve a visually appealing result and is seeking advice on whether to submit it as a pull request and where the file should be placed within the project.

    • The comments suggest that while the style is appreciated, it may not be suitable for inclusion in the main library due to its editor-specific nature. An alternative suggestion is to create a VS Code plugin, but the user feels this might be excessive for a simple configuration change. The discussion concludes with recommendations to share the style on the Matplotlib Discourse forum and possibly submit it to a theme collection repository.
    • Number of comments this week: 3
  5. [MNT]: Rename axis3d.Axis to Axis3D: This issue discusses the proposal to rename axis3d.Axis to Axis3D in a GitHub project, highlighting the current inheritance structure where axis3d.Axis inherits from axis.XAxis, which in turn inherits from axis.Axis. The issue suggests that this renaming could improve clarity and consistency, especially if the 3D functionality is integrated into the main library in the future, and also considers renaming other related classes for consistency.

    • The comment section provides a detailed analysis of the current inheritance structure, suggesting a step-by-step approach to decouple 3D functionality from axis.XAxis by creating an axis3d.AxisBase class. It advises against renaming axis3d.Axis to Axis3D immediately due to potential confusion, despite the separation through namespaces, and highlights the complexity involved in ensuring backward compatibility with existing configurations.
    • Number of comments this week: 1

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, leading to incorrect density computations due to the internal conversion of categories to integers, which affects the bin width and results in miscalculated density values. Additionally, the issue addresses 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 for 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 using 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 it displays mouse cursor values with a precision that matches the cursor pointing accuracy, similar to the existing functionality for linear formatters. The problem has been open for over 409 days, and while a solution has not yet been proposed, the enhancement would improve the consistency and usability of the tool's interface.
  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. As a result, users must manually trigger updates to the data limits using methods like set_xlim and set_ylim to ensure that ax.transData uses the latest data limits, which can be 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:

  • Documentation Navigation Streamlining: The Matplotlib documentation is being reviewed to improve user experience by potentially removing or consolidating sections like "Plot Types" and "Releases." This effort also considers integrating tutorials into the user guide for a more coherent structure.
    • issues/30074
  • Class Renaming for Clarity: A proposal to rename the class axis3d.Axis to Axis3D aims to improve clarity and facilitate future integration into the main library. This change also involves considering the inheritance structure and renaming related classes for consistency.
    • issues/30075
  • Layout Management Bugs: The Matplotlib library has a bug where layout managers fail to arrange sub-figures and gridspecs correctly, leading to inconsistent axis sizes and overlapping decorations. Another issue on Raspberry Pi OS shows a subplot layout failing to display correctly with large initial figure sizes, but working when resized smaller, which is unexpected behavior.
    • issues/30076, issues/30083
  • Enhancements and Customization: A user proposes creating a custom style sheet, vscode-dark.mplstyle, to match the VS Code Dark Mode color scheme, seeking feedback on its inclusion in the main library. Additionally, an enhancement to the matplotlib.axes.Axes.legend function is proposed to add a parameter for setting the line width of the legend frame.
    • issues/30094, issues/30095

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

Summarized Issues:

  • Rendering Issues in Matplotlib Plots: Users encounter unreadable, pixelated dotted lines in their plots, which may be due to rendering backend issues or incorrect reshaping of image data. Community members suggest trying different backends or saving the plot to confirm sharpness.
    • issues/30042
  • Color Cycle Enhancements in Matplotlib: The addition of 6-color and 8-color sequences from Petroff's color cycles to Matplotlib is discussed, highlighting their distinctiveness from the existing 10-color sequence. Community support is evident, with references to previous issues and pull requests.
    • issues/30060, issues/30086
  • Matplotlib Documentation Website Issues: The navigation links on the Matplotlib documentation website are obscured when the browser window is snapped to the side on a 1920x1080 screen. This suggests a need for more responsive page styling to accommodate split-screen viewing.
    • issues/30072
  • Transition from Google Analytics to Plausible: The Matplotlib project transitioned from Google Analytics to Plausible for tracking website analytics, leading to the cessation of Google Analytics data collection. This change is discussed in the comments of the issue.
    • issues/30073
  • TypeError in Matplotlib's plt.legend Function: A bug in Matplotlib occurs when calling plt.legend(...) with arguments of type <class 'itertools.chain'>, resulting in a TypeError due to the absence of a length method. This issue arose after a change in the source code removed an explicit cast to a list.
    • issues/30078

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

Key Open Pull Requests

1. Rename evans_test.py example for Foo units class and conversion: This pull request involves renaming a test file from "evans_test.py" to "test_evans.py" to align with pytest naming conventions while maintaining its original purpose, and it addresses issue #23281 by ensuring the changes are tested, documented, and linked to the relevant issue.

  • URL: pull/30104
  • Merged: No
  • Associated Commits: a49fa, 87e8e

2. Simplify dviFontInfo layout in backend pdf.: This pull request aims to simplify the dviFontInfo layout in the PDF backend of the Matplotlib project by implementing a more straightforward and deterministic mapping of TeX font names to PDF embedding names, and by resolving only the necessary attributes when needed to avoid handling attributes with different names, such as "encoding" versus "encodingfile".

  • URL: pull/30082
  • Merged: No
  • Associated Commits: 36a67

3. Parse FontBBox in type1font.: This pull request aims to parse the FontBBox directly in the type1font, eliminating the need to use ft2font in createType1Descriptor for extracting the font bounding box, ascender, and descender, by ensuring compliance with the type1 font standard and aligning with FreeType's behavior.

  • URL: pull/30088
  • Merged: No
  • Associated Commits: c4e54

Other Open Pull Requests

  • Submerged Margins Algorithm Fix: This topic addresses the issue where the submerged margins algorithm was incorrectly applied twice to figures with subfigures. The fix ensures the algorithm is not reapplied to axes that have already been processed within a subfigure, resolving the problem described in issue #30076.
    • pull/30089
  • New File Creation - category.pyi: This pull request involves the creation of a new file named category.pyi for the Matplotlib project. It includes necessary changes that are tested, documented, and linked to a related issue, ensuring compliance with the project's development and documentation guidelines.
    • pull/30093
  • label_outer Function Fix: This topic addresses an issue in the Matplotlib project by fixing the label_outer function. The fix ensures it correctly considers the subgridspec containing both the axes and the colorbar, resolving issue #27305.
    • pull/30098
  • HostAxes Tight Bounding Box Computation: This pull request addresses the issue of incorrect tight bounding box computation in HostAxes by forwarding the axes locator. It includes a simplified test derived from the original problem script, aiming to close issue #19832.
    • pull/30099
  • Unicode Glyph Sizing in SVG and Path Effects: This pull request proposes using "fix-cm" instead of "type1cm" to address unicode glyph sizing issues in SVG and path effects. It includes a test for the patch referenced in a previous issue comment and aims to close multiple related issues while superseding an earlier pull request.
    • pull/30100
  • Enhanced Error Reporting in ft2font Module: This pull request aims to enhance error reporting in the ft2font module by introducing a macro that calls a FreeType function and throws an exception if an error occurs. It provides detailed information including the source file and line number, improving the clarity and specificity of error messages.
    • pull/30102

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

Key Closed Pull Requests

1. ENH: Add Petroff 6 and 8 color cycle style sheets: This pull request introduces new style sheets for the Petroff 6 and 8 color cycles to Matplotlib, enhancing the library's color sequence options for data visualization by building on the previously added 10 color cycle and ensuring these new cycles are documented and tested.

  • URL: pull/30065
  • Merged: 2025-05-19T17:21:19Z
  • Associated Commits: 0d844, 324e7, b89e4

2. Fix Cursor widget drawing behavior with blitting support: This pull request addresses the inefficiency in the Cursor widget's redrawing behavior when the mouse moves out of the axis by implementing blitting support, which significantly improves the performance of the redrawing process.

  • URL: pull/29971
  • Merged: No
  • Associated Commits: 37004, 09a03

3. DOC: add API docs content guidelines to api docs instructions: This pull request involves updating the API documentation instructions by renaming docstring references, moving inheritance diagrams to a new API documentation section, and incorporating API documentation guidelines, as discussed in related issues #28578 and #26389, to enhance clarity and usability for contributors.

  • URL: pull/30085
  • Merged: 2025-05-20T22:47:59Z
  • Associated Commits: a3782, c3987

Other Closed Pull Requests

  • Type Hints and File Creation in categorical_variables: The pull requests related to categorical_variables involve adding type hints to improve code clarity and creating a new file for necessary changes. Despite the efforts, these changes were not merged into the main branch.
    • pull/30091, pull/30092
  • Legend Handle Casting Fixes: These pull requests address the issue of casting legend handles to a list, ensuring the changes are tested to prevent future regressions. The fix was backported to the v3.10.x branch, demonstrating its importance and successful integration.
    • pull/30079, pull/30081
  • OffsetBox Custom Picker Fixes: The pull requests focus on correcting the OffsetBox custom picker by ensuring the Artist.contains method handles its return values properly. This fix was also backported to the v3.10.x branch to maintain consistency across versions.
    • pull/30096, pull/30101
  • Documentation Enhancements: These pull requests enhance the Matplotlib documentation by adding new color sequences and plot types content guidance. They ensure that the documentation is clear, organized, and compliant with guidelines.
    • pull/30084, pull/30087
  • Sphinx Test Simplifications: The pull request simplifies Sphinx tests by removing redundant sphinx-build calls and unnecessary file copies. This streamlines the testing process without affecting the original files.
    • pull/30090
  • Attribute and Class Updates: These pull requests update deprecated attributes and replace outdated classes with modern alternatives. They ensure the codebase aligns with current standards and practices.
    • pull/30044, pull/30077
  • Test Data Management: The pull request consolidates test data files into a single subdirectory, simplifying their management. This change makes it easier to handle test data collectively rather than individually.
    • pull/30061
  • Regular Expression and API Documentation Fix: The pull request removes a problematic point in a regular expression that was causing API documentation to be cropped. This fix improves the clarity and completeness of the documentation.
    • pull/30097
  • Legend Frame Line Width Customization: The pull request introduces a new parameter, framelinewidth, to the legend() function, allowing users to customize the legend frame's line width. This enhancement addresses a previously highlighted limitation.
    • pull/30103

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 21 0 0 20
QuLogic 21 4 0 14
anntzer 19 13 0 6
story645 7 2 1 24
jklymak 2 1 3 25
dstansby 17 3 0 5
rcomer 5 1 0 18
tacaswell 6 0 0 12
Lynsoo 13 0 0 0
ebubekir-pulat 10 3 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.