Weekly GitHub Report for Matplotlib: November 03, 2025 - November 10, 2025 (12:05:34)
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:
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, and added version gating for GTK4 calls, alongside enhanced documentation. Notably, it also introduces a warning for conflicting scatter plot color parameters, reflecting a focus on stability and user guidance.
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.
-
[Bug]: Clip box property of ax.text(...) has no effect: This issue reports that setting the
clip_boxproperty on text objects created withax.text(...)in Matplotlib has no effect, meaning the text is not clipped as expected within the specified bounding box. The user demonstrates this with a reproducible example where lines are clipped correctly but text is not, and requests that text clipping behave similarly to lines.- The discussion clarifies that Matplotlib’s text clipping behavior is based on whether the text anchor point lies within the clip box rather than clipping the rendered text itself, a design choice that has existed for over a decade. A workaround using
ax.annotateinstead ofax.textis suggested and confirmed to work, and while changing the default clipping behavior would be disruptive, adding an option for alternative clipping methods might be possible but complex to implement. - Number of comments this week: 4
- The discussion clarifies that Matplotlib’s text clipping behavior is based on whether the text anchor point lies within the clip box rather than clipping the rendered text itself, a design choice that has existed for over a decade. A workaround using
-
[ENH]: EngFormatter to print as significant figures: This issue addresses the enhancement of the EngFormatter in matplotlib to format numbers based on a specified number of significant figures rather than decimal places, which is more aligned with common engineering practices. The user proposes adding a new parameter to control significant figures while maintaining backward compatibility and optionally allowing control over trailing zeros in the formatted output.
- The discussion begins with the user expressing interest in implementing significant figures formatting and asking if anyone else is working on it. Feedback highlights the need for design decisions about supporting both decimal places and significant figures, suggesting a new parameter (e.g.,
digits) to specify significant figures while keepingplacesfor backward compatibility. The user agrees with this approach, plans to add an option for trailing zeros, and seeks confirmation before proceeding with implementation. - Number of comments this week: 4
- The discussion begins with the user expressing interest in implementing significant figures formatting and asking if anyone else is working on it. Feedback highlights the need for design decisions about supporting both decimal places and significant figures, suggesting a new parameter (e.g.,
-
Fix documentation: This issue addresses the concern that the current documentation is overly wordy and requests that it be rewritten in simpler language for better clarity. The original poster is seeking improvements to make the documentation more accessible and easier to understand.
- A commenter asked for specific examples of the wordy sections to better understand which parts of the documentation need simplification.
- 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.
- [Bug]: Misalignment of Labels and Incorrect Density Values in
ax.hist()for Categorical Variables: This issue addresses a bug in theax.hist()function of Matplotlib when used with categorical variables and thedensity=Trueparameter, 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 problem where the x-axis labels are not centered on the bars, compounded by a lack of clear documentation on how categories are mapped to integers, making it difficult to correctly position the labels. - [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 involve editing configuration files and dealing with numerous warnings. The author proposes improving the documentation to include practical tips for this use case and suggests adding a dedicated build target in the Makefile to streamline the process, making it easier for developers—especially beginners—to preview and develop individual gallery examples.
- [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 indicating an unknown symbol, highlighting the need for enhanced support for "\limits" in mathtext parsing.
- [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 reporter suggests implementing a similar feature for log formatters to match the cursor pointing precision, enhancing the accuracy of displayed values.
- [Bug]:
ax.transDatadoes not honor data limits: This issue reports a bug in Matplotlib where the transformationax.transDatadoes not respect the current data limits set byxlimandylim, causing it to use outdated data limits when transforming coordinates. The user highlights that although the documentation implies data limits update automatically with new data, in practice, manual calls to update these limits are necessary, leading to confusion and suggesting either a documentation update or an improvement to havetransDataalways reflect the latest data limits.
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: 3
Summarized Issues:
- Text clipping issues: Setting the
clip_boxproperty on text objects created withax.text(...)does not clip the text as expected, unlike line objects which clip correctly. This unexpected behavior causes confusion and requires users to find potential workarounds to achieve desired clipping effects. - issues/30718
- Documentation clarity: The current documentation is considered overly wordy and complex, prompting a request to simplify and rewrite it in clearer, more straightforward language. Improving the documentation aims to enhance user understanding and accessibility.
- issues/30719
- Number formatting enhancements: There is a proposal to improve matplotlib's EngFormatter by formatting numbers based on significant figures instead of decimal places, addressing inconsistencies in accuracy representation and string length variability. The enhancement includes adding a new parameter (e.g.,
digits) to maintain backward compatibility and optionally control trailing zeros. - issues/30727
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:
- Bar chart rendering issues with rasterization: Bars disappear from bar charts created with
Axes.bar()when therasterized=Trueoption is used on densely populated x-axes, resulting in missing bars in the output PDF despite all x-positions having corresponding y-values. This problem affects the reliability of visual output in certain export formats and complicates the use of rasterization for performance or file size benefits. - issues/30722
- Grouped bar chart hatch pattern defaults: There is a discussion on whether
Axes.grouped_bar()should automatically apply a default hatch pattern when none is provided to improve visual distinction, especially for multiple datasets with similar colors or grayscale printing. The current behavior requires explicit opt-in for hatching, which some users find less convenient for clarity in grouped bar charts. - issues/30728
- Code refactoring for grouped bar orientation logic: The orientation logic in
Axes.grouped_bar()is proposed to be refactored by consolidating repetitive keyword arguments into a sharedcommon_kwargsdictionary. This change aims to reduce redundancy, improve maintainability, and simplify the codebase for this method. - issues/30729
- Dynamic theme switching feasibility: A proposal to add a built-in API toggle for switching between dark and light themes at runtime was considered but ultimately closed as not feasible. The limitation arises because Matplotlib applies styles at object creation time rather than at draw time, preventing dynamic theme changes during runtime.
- issues/30731
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: 5
Key Open Pull Requests
1. Add support for (some) colour fonts: This pull request adds support for rendering COLRv0 color fonts in Matplotlib by leveraging FreeType's color glyph capabilities and updating the font rendering pipeline to use direct glyph rendering, while excluding other color font types like CBDT, SVG, and COLRv1 due to their complexity or lack of scalable support.
- URL: pull/30725
- Merged: No
- Associated Commits: 95979, bd17c, 22e5b, b0a13, 1028e, 83b01, a9abc, 41cab, 78398, ce91e, 6521d, c3d69, 4c802, 219d9, 617cb
2. Enh/Add hatch pattern support to Axes.grouped_bar: This pull request enhances the Axes.grouped_bar() API in Matplotlib by adding support for per-dataset hatch patterns through a new hatch keyword argument, including validation, cycling behavior consistent with colors, and documentation updates, while ensuring consistent application across both vertical and horizontal bar orientations.
- URL: pull/30726
- Merged: No
- Associated Commits: cd9dd, 6e3a7, dc944, b4027, 90f0a, 0fad9, 1eb63, 96091, adf27, a8c87, d2f19, afb64, 485ef, 9fffd, c7c5a
3. Fix alpha array not working with RGB images in imshow(): This pull request fixes a bug in Matplotlib's imshow() function where array-type alpha parameters were ignored for RGB images by modifying the _make_image method to correctly pass the alpha parameter to to_rgba(), ensuring per-pixel transparency is applied consistently with grayscale images, and includes a new test to verify this behavior.
- URL: pull/30730
- Merged: No
Other Open Pull Requests
- New Widget Implementations: This pull request introduces the SpanSelectorN, a multi-span selector widget designed to facilitate spectroscopy and normalization tasks in data analysis. It is a draft implementation linked to and closing issue #28484.
- pull/30720
- Pie Chart Enhancements: This pull request adds a new
PieContainerclass as the return value of thepiefunction and introduces apie_labelmethod for adding labels to pie chart wedges. These changes enable automatic labeling with values and fractions, enhancing pie chart functionality in Matplotlib. - pull/30733
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: 4
Key Closed Pull Requests
1. Backport PR #30714 on branch v3.10.x (FIX: Gracefully handle numpy arrays as input to check_in_list()): This pull request backports a fix to the v3.10.x branch of the Matplotlib project that enables the function check_in_list() to gracefully handle numpy array inputs.
- URL: pull/30717
- Merged: Yes
- Associated Commits: d3007
2. Minor edit in README for clarity (#25032): This pull request proposes a minor edit to the Matplotlib README.md to improve clarity by emphasizing the phrase “comprehensive library” in the introduction, aiming to enhance readability and help new users better understand the project's purpose without affecting any code functionality.
- URL: pull/30721
- Merged: No
- Associated Commits: 91142
3. Add file extension to whatsnew entry: This pull request adds the missing file extension to a "what's new" entry to ensure it appears correctly on the next release notes page.
- URL: pull/30723
- Merged: Yes
- Associated Commits: 6e7d8
Other Closed Pull Requests
- README improvements: This pull request enhances the Matplotlib README by adding a simple quick example of a line plot. The example includes basic plotting elements such as axis labels, a title, grid lines, markers for visibility, and a display command to help new users quickly understand how to create a basic line chart.
- pull/30732
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 | 16 | 1 | 1 | 56 |
| ilakkmanoharan | 30 | 2 | 4 | 17 |
| QuLogic | 22 | 2 | 0 | 11 |
| rcomer | 5 | 2 | 0 | 26 |
| story645 | 2 | 1 | 1 | 17 |
| tacaswell | 3 | 0 | 0 | 7 |
| heinrich5991 | 3 | 1 | 2 | 3 |
| anntzer | 5 | 1 | 0 | 1 |
| ngoldbaum | 2 | 0 | 1 | 3 |
| No author found | 6 | 0 | 0 | 0 |