Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7dd5281

Browse filesBrowse files
authored
DOC: put section headings in 3.10 whats new (#29442)
* DOC: put section headings in 3.10 whats new
1 parent 9a834ad commit 7dd5281
Copy full SHA for 7dd5281

File tree

1 file changed

+130
-93
lines changed
Filter options

1 file changed

+130
-93
lines changed

‎doc/users/prev_whats_new/whats_new_3.10.0.rst

Copy file name to clipboardExpand all lines: doc/users/prev_whats_new/whats_new_3.10.0.rst
+130-93Lines changed: 130 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
=============================================
2+
What's new in Matplotlib 3.10.0 (Dec 14, 2024)
3+
=============================================
4+
5+
For a list of all of the issues and pull requests since the last revision, see the
6+
:ref:`github-stats`.
7+
8+
.. contents:: Table of Contents
9+
:depth: 4
10+
11+
.. toctree::
12+
:maxdepth: 4
13+
14+
Accessible Colors
15+
=================
16+
17+
118
New more-accessible color cycle
219
-------------------------------
320

@@ -43,6 +60,12 @@ colour maps version 8.0.1 (DOI: https://doi.org/10.5281/zenodo.1243862).
4360
ax[1].imshow(img, cmap=plt.cm.managua)
4461
ax[2].imshow(img, cmap=plt.cm.vanimo)
4562

63+
64+
65+
Plotting and Annotation improvements
66+
====================================
67+
68+
4669
Specifying a single color in ``contour`` and ``contourf``
4770
---------------------------------------------------------
4871

@@ -65,66 +88,6 @@ may be passed.
6588

6689
plt.show()
6790

68-
Exception handling control
69-
--------------------------
70-
71-
The exception raised when an invalid keyword parameter is passed now includes
72-
that parameter name as the exception's ``name`` property. This provides more
73-
control for exception handling:
74-
75-
76-
.. code-block:: python
77-
78-
import matplotlib.pyplot as plt
79-
80-
def wobbly_plot(args, **kwargs):
81-
w = kwargs.pop('wobble_factor', None)
82-
83-
try:
84-
plt.plot(args, **kwargs)
85-
except AttributeError as e:
86-
raise AttributeError(f'wobbly_plot does not take parameter {e.name}') from e
87-
88-
89-
wobbly_plot([0, 1], wibble_factor=5)
90-
91-
.. code-block::
92-
93-
AttributeError: wobbly_plot does not take parameter wibble_factor
94-
95-
Preliminary support for free-threaded CPython 3.13
96-
--------------------------------------------------
97-
98-
Matplotlib 3.10 has preliminary support for the free-threaded build of CPython 3.13. See
99-
https://py-free-threading.github.io, `PEP 703 <https://peps.python.org/pep-0703/>`_ and
100-
the `CPython 3.13 release notes
101-
<https://docs.python.org/3.13/whatsnew/3.13.html#free-threaded-cpython>`_ for more detail
102-
about free-threaded Python.
103-
104-
Support for free-threaded Python does not mean that Matplotlib is wholly thread safe. We
105-
expect that use of a Figure within a single thread will work, and though input data is
106-
usually copied, modification of data objects used for a plot from another thread may
107-
cause inconsistencies in cases where it is not. Use of any global state (such as the
108-
``pyplot`` module) is highly discouraged and unlikely to work consistently. Also note
109-
that most GUI toolkits expect to run on the main thread, so interactive usage may be
110-
limited or unsupported from other threads.
111-
112-
If you are interested in free-threaded Python, for example because you have a
113-
multiprocessing-based workflow that you are interested in running with Python threads, we
114-
encourage testing and experimentation. If you run into problems that you suspect are
115-
because of Matplotlib, please open an issue, checking first if the bug also occurs in the
116-
“regular” non-free-threaded CPython 3.13 build.
117-
118-
Increased Figure limits with Agg renderer
119-
-----------------------------------------
120-
121-
Figures using the Agg renderer are now limited to 2**23 pixels in each
122-
direction, instead of 2**16. Additionally, bugs that caused artists to not
123-
render past 2**15 pixels horizontally have been fixed.
124-
125-
Note that if you are using a GUI backend, it may have its own smaller limits
126-
(which may themselves depend on screen size.)
127-
12891
Vectorized ``hist`` style parameters
12992
------------------------------------
13093

@@ -259,39 +222,6 @@ Subfigures are now added in row-major order
259222
ax.set_yticks([])
260223
plt.show()
261224

262-
``svg.id`` rcParam
263-
------------------
264-
265-
:rc:`svg.id` lets you insert an ``id`` attribute into the top-level ``<svg>`` tag.
266-
267-
e.g. ``rcParams["svg.id"] = "svg1"`` results in
268-
default), no ``id`` tag is included
269-
270-
.. code-block:: XML
271-
272-
<svg
273-
xmlns:xlink="http://www.w3.org/1999/xlink"
274-
width="50pt" height="50pt"
275-
viewBox="0 0 50 50"
276-
xmlns="http://www.w3.org/2000/svg"
277-
version="1.1"
278-
id="svg1"
279-
></svg>
280-
281-
This is useful if you would like to link the entire matplotlib SVG file within
282-
another SVG file with the ``<use>`` tag.
283-
284-
.. code-block:: XML
285-
286-
<svg>
287-
<use
288-
width="50" height="50"
289-
xlink:href="mpl.svg#svg1" id="use1"
290-
x="0" y="0"
291-
/></svg>
292-
293-
Where the ``#svg1`` indicator will now refer to the top level ``<svg>`` tag, and
294-
will hence result in the inclusion of the entire file.
295225

296226
``boxplot`` and ``bxp`` orientation parameter
297227
---------------------------------------------
@@ -361,6 +291,11 @@ the ``set_data`` method, enabling e.g. resampling
361291
coll.set_data(t, -t**4, t**4)
362292
fig.savefig("after.png")
363293
294+
295+
3D plotting improvements
296+
========================
297+
298+
364299
Fill between 3D lines
365300
---------------------
366301

@@ -471,6 +406,108 @@ view box is a limitation of the current renderer.
471406
ax.legend(['axlim_clip=False (default)', 'axlim_clip=True'])
472407

473408

409+
Preliminary support for free-threaded CPython 3.13
410+
==================================================
411+
412+
Matplotlib 3.10 has preliminary support for the free-threaded build of CPython 3.13. See
413+
https://py-free-threading.github.io, `PEP 703 <https://peps.python.org/pep-0703/>`_ and
414+
the `CPython 3.13 release notes
415+
<https://docs.python.org/3.13/whatsnew/3.13.html#free-threaded-cpython>`_ for more detail
416+
about free-threaded Python.
417+
418+
Support for free-threaded Python does not mean that Matplotlib is wholly thread safe. We
419+
expect that use of a Figure within a single thread will work, and though input data is
420+
usually copied, modification of data objects used for a plot from another thread may
421+
cause inconsistencies in cases where it is not. Use of any global state (such as the
422+
``pyplot`` module) is highly discouraged and unlikely to work consistently. Also note
423+
that most GUI toolkits expect to run on the main thread, so interactive usage may be
424+
limited or unsupported from other threads.
425+
426+
If you are interested in free-threaded Python, for example because you have a
427+
multiprocessing-based workflow that you are interested in running with Python threads, we
428+
encourage testing and experimentation. If you run into problems that you suspect are
429+
because of Matplotlib, please open an issue, checking first if the bug also occurs in the
430+
“regular” non-free-threaded CPython 3.13 build.
431+
432+
433+
434+
Other Improvements
435+
==================
436+
437+
``svg.id`` rcParam
438+
------------------
439+
440+
:rc:`svg.id` lets you insert an ``id`` attribute into the top-level ``<svg>`` tag.
441+
442+
e.g. ``rcParams["svg.id"] = "svg1"`` results in
443+
444+
.. code-block:: XML
445+
446+
<svg
447+
xmlns:xlink="http://www.w3.org/1999/xlink"
448+
width="50pt" height="50pt"
449+
viewBox="0 0 50 50"
450+
xmlns="http://www.w3.org/2000/svg"
451+
version="1.1"
452+
id="svg1"
453+
></svg>
454+
455+
This is useful if you would like to link the entire matplotlib SVG file within
456+
another SVG file with the ``<use>`` tag.
457+
458+
.. code-block:: XML
459+
460+
<svg>
461+
<use
462+
width="50" height="50"
463+
xlink:href="mpl.svg#svg1" id="use1"
464+
x="0" y="0"
465+
/></svg>
466+
467+
Where the ``#svg1`` indicator will now refer to the top level ``<svg>`` tag, and
468+
will hence result in the inclusion of the entire file.
469+
470+
By default, no ``id`` tag is included.
471+
472+
Exception handling control
473+
--------------------------
474+
475+
The exception raised when an invalid keyword parameter is passed now includes
476+
that parameter name as the exception's ``name`` property. This provides more
477+
control for exception handling:
478+
479+
480+
.. code-block:: python
481+
482+
import matplotlib.pyplot as plt
483+
484+
def wobbly_plot(args, **kwargs):
485+
w = kwargs.pop('wobble_factor', None)
486+
487+
try:
488+
plt.plot(args, **kwargs)
489+
except AttributeError as e:
490+
raise AttributeError(f'wobbly_plot does not take parameter {e.name}') from e
491+
492+
493+
wobbly_plot([0, 1], wibble_factor=5)
494+
495+
.. code-block::
496+
497+
AttributeError: wobbly_plot does not take parameter wibble_factor
498+
499+
Increased Figure limits with Agg renderer
500+
-----------------------------------------
501+
502+
Figures using the Agg renderer are now limited to 2**23 pixels in each
503+
direction, instead of 2**16. Additionally, bugs that caused artists to not
504+
render past 2**15 pixels horizontally have been fixed.
505+
506+
Note that if you are using a GUI backend, it may have its own smaller limits
507+
(which may themselves depend on screen size.)
508+
509+
510+
474511
Miscellaneous Changes
475512
---------------------
476513

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.