Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Matplotlib: November 10, 2025 - November 17, 2025 (12:04:25)

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-enabled systems, fixes for pyplot.matshow and Axes position modifications, adjustments to polar plot titles, and added version gating for GTK4 calls, alongside enhanced documentation and warnings for scatter plot color usage.

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]: axis3d.Axis.get_tightbbox() is not including the offset_text: This issue reports a bug where the method axis3d.Axis.get_tightbbox() in Matplotlib does not include the offset text, causing the offset label to be clipped or missing in 3D surface plots with high-precision values. The user demonstrates this with a minimal example and highlights that the missing offset text leads to confusing plot visuals, especially when using the inline backend in environments like Google Colab.

    • The discussion clarifies that the behavior is due to the inline backend clipping figures to the tight bounding box and the bug in get_tightbbox() not accounting for offset text, resulting in it being cut off. Workarounds include disabling offset formatting or adjusting backend settings to prevent clipping, and rotating the plot to better visualize the surface; the issue is confirmed as a backend and bounding box handling problem rather than a data precision error.
    • Number of comments this week: 6
  2. [Bug]: grouped_bar can pass label and color twice, causing TypeError: This issue describes a bug in the Axes.grouped_bar function where passing label or color keyword arguments twice causes a TypeError because these arguments are explicitly passed inside the function and can also be included in kwargs, leading to duplicate values for the same parameter. The problem arises when users provide these keywords directly or when labels are automatically generated from inputs like pandas DataFrames, resulting in a conflict that prevents the grouped bar plot from rendering correctly.

    • The comment section includes a user requesting assignment to the issue, followed by guidance on the contribution process involving pull requests and maintainer reviews. Another contributor advises caution and further testing before proceeding, while a discussion suggests the root cause might be a misspelling of the parameter name (label vs. labels). Finally, a user commits to investigating and resolving the issue soon.
    • Number of comments this week: 5
  3. [DOC] Plotting common 3D mesh files in matplotlib: This issue proposes adding an example to the matplotlib documentation demonstrating how to import and plot common 3D mesh file formats using the meshio library, which supports a wide range of file types. The user is seeking feedback on whether including this third-party dependency in the docs build is acceptable, given concerns about repository activity and discoverability of such examples if hosted externally.

    • Commenters generally support the idea of including this example in the documentation, especially if the dependency remains lightweight and limited to the docs build rather than runtime. They caution that matplotlib is not a full 3D rendering engine, so users should have realistic expectations about visualization accuracy and performance, and express some concern about adding data dependencies but find the meshio formats stable and appropriate for this use.
    • Number of comments this week: 3
  4. [Bug]: Autoscale not synced between shared axes when interactively zooming: This issue reports a bug in Matplotlib where interactive zooming on shared axes does not properly disable autoscaling on the other axes, causing the axes to reset unexpectedly when autoscale is called afterward. The expected behavior is that manual zooming should disable autoscaling for all shared axes, similar to how programmatic limit changes with set_ylim() work, but currently only programmatic changes synchronize autoscale state correctly.

    • The comments explain that the root cause is the interactive zoom tool updating view limits without disabling autoscale on shared axes, unlike set_ylim() which does disable it. A likely fix involves propagating autoscale disabling within the zoom callback or shared-axis synchronization logic, and a workaround is to manually disable autoscale after zooming. Additionally, panning has a similar autoscale synchronization issue, and the issue author is willing to help draft a patch covering both zoom and pan.
    • Number of comments this week: 3
  5. [ENH]: Add rcParams for xscale and yscale: This issue proposes adding new rcParams named axes.xscale and axes.yscale to allow users to set the x-axis and y-axis scales globally through Matplotlib's configuration system, rather than having to specify them manually for each plot. The motivation is to enable easier and more consistent styling, especially when programmatically generating stylesheets that require certain scales, such as logarithmic y-scales for specific types of plots.

    • The comments discuss the appropriateness of treating axis scales as style attributes, with one user questioning the universality of xscale as a global setting and suggesting it is more of a per-plot property. Another user explains their use case involving programmatic stylesheet generation where setting yscale globally would be convenient. A third commenter argues that scales are not style attributes and recommends managing plot differences through explicit parameters rather than rcParams, emphasizing the intended purpose of stylesheets for homogeneity rather than context-specific plot variations.
    • Number of comments this week: 3

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 1. 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 the category-to-integer mapping is performed, 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 long build times or cumbersome workarounds that generate many warnings. The author proposes improving the documentation with practical tips and modifying the build configuration to streamline this process, making it easier for developers—especially beginners—to preview and develop individual gallery examples 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, specifically integrals with limits displayed above and below the integral sign. The user expects the "\limits" command to properly format the integral limits as in standard LaTeX, but instead encounters a ValueError indicating an unknown symbol, highlighting a need for enhanced parsing support for "\limits" in mathtext.
  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 that the ax.transData transformation in Matplotlib does not automatically respect the current data limits (xlim and ylim), causing it to use outdated limits when transforming data coordinates. The user highlights that although the documentation implies data limits update automatically when new data is added, in practice, manual calls to methods like set_xlim or set_ylim are required to refresh these limits, leading to confusion and inconsistent behavior.

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

Summarized Issues:

  • Bug in plotting functions and axis behavior: Several issues report bugs affecting plotting functions and axis behavior, including a TypeError caused by duplicate keyword arguments in grouped_bar, failure to include offset text in 3D axis bounding box calculations, and improper autoscale disabling during interactive zoom on shared axes. These bugs impact the reliability and visual correctness of plots, especially in interactive and 3D contexts.
  • issues/30739, issues/30744, issues/30747
  • Documentation enhancement with external dependencies: There is a proposal to add an example to the Matplotlib documentation demonstrating how to import and plot common 3D mesh file formats using the third-party library meshio, while weighing concerns about adding external dependencies and ensuring the example's stability and discoverability. This reflects a balance between improving user guidance and maintaining documentation quality without complicating the build process.
  • issues/30738
  • Configuration improvements for axis scaling: A feature request suggests adding new rcParams, axes.xscale and axes.yscale, to allow users to globally set axis scales through Matplotlib's configuration system, simplifying the process compared to setting scales manually for each plot. This would enhance user convenience and consistency across plots.
  • issues/30751

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

Summarized Issues:

  • Feature requests for plot customization: Two issues propose enhancements to plotting capabilities in Matplotlib. One suggests adding a :code-caption: option to the .. plot directive in Sphinx to allow captions for internally produced code blocks, while another requests a "scatter" plot type option for the histtype argument to visualize histograms as scatter plots, though the latter was closed due to its uncommon use case.
  • [issues/30740, issues/30743]
  • Rendering and export bugs: There are issues related to unexpected visual artifacts and performance problems in Matplotlib. One bug reports an unknown black rectangle with rounded corners appearing in decision tree PNG exports, and another describes unnecessary font cache rebuilds on IPython startup caused by explicit FontManager instantiation, leading to repeated delays.
  • [issues/30745, issues/30748]

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

Key Open Pull Requests

1. Fix PDF bloat for off-axis scatter with per-point colors: This pull request addresses the issue of excessive PDF file size when using scatter plots with per-point colors by adding bounds checking in the PDF backend to skip rendering markers that fall outside the visible canvas, thereby significantly reducing PDF bloat without changing any user-facing behavior.

  • URL: pull/30746
  • Merged: No
  • Associated Commits: 4104d, f95d7, 1f3b3, 1c3e6, 3ef8b

2. implementation of mpl_init mechanism: This pull request implements the mpl_init mechanism to eliminate a dependency as discussed in issue #29813 and includes corresponding tests to validate the new functionality.

  • URL: pull/30742
  • Merged: No
  • Associated Commits: e2607, 85b35

3. FIX: when creating a canvas from a Figure use original dpi: This pull request addresses a bug in Matplotlib where repeatedly passing the same Figure instance to a high-DPI supporting Canvas caused an infinite DPI scaling loop by ensuring the original DPI is used when creating a canvas, thereby preventing the scaled DPI from being mistakenly treated as the original and includes fixes for correctly restoring the size of unpickled figures with high-DPI settings.

  • URL: pull/30750
  • Merged: No
  • Associated Commits: c0041, 973c9

Other Open Pull Requests

  • Deprecation of unused parameters: This topic covers the removal of the unused canvas parameter in the MultiCursor component of Matplotlib. The pull request addresses issue #21496 by proposing the deprecation to clean up the codebase and improve maintainability.
  • pull/30737

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

Key Closed Pull Requests

1. DOC: Correct grammatical issues especially on a/an usage: This pull request corrects grammatical issues in the codebase, focusing primarily on the proper usage of "a" versus "an," including a revision to a print message in a pytest warning to improve clarity.

  • URL: pull/30736
  • Merged: Yes
  • Associated Commits: 50030, 96a5e

2. Add :code-caption: option to plot directive: This pull request adds a :code-caption: option to the .. plot reStructuredText directive in Matplotlib, allowing users to include a caption for the source code displayed alongside plots.

  • URL: pull/30741
  • Merged: Yes
  • Associated Commits: ce478

3. Fix grouped_bar TypeError with label/color in kwargs: This pull request addresses a TypeError in the grouped_bar function caused by passing 'label' and 'color' arguments both explicitly and through **kwargs by removing these keys from kwargs before forwarding them, thereby preventing duplicate keyword arguments and allowing users to specify these parameters without error.

  • URL: pull/30749
  • Merged: No
  • Associated Commits: 2b920

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 14 2 1 60
ilakkmanoharan 30 2 5 20
QuLogic 22 2 0 11
rcomer 3 1 0 23
story645 2 1 1 20
tacaswell 2 1 0 19
FazeelUsmani 5 1 0 3
anntzer 5 1 0 1
jklymak 0 0 0 7
star1327p 5 1 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.