Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Description
Documentation Link
https://matplotlib.org/stable/gallery/images_contours_and_fields/contourf_demo.html
Problem
The contourf demo could use a clear example of how to properly rasterize the output. It may be useful to include this information directly in the contourf documentation.
Here's a minimal example that shows what used to work for me (based on the example in thecontourf demo and the top answer fromstackoverflow), but is now deprecated as of matplotlib 3.8:
import numpy as npimport matplotlib.pyplot as pltdelta = 0.025x = y = np.arange(-3.0, 3.01, delta)X, Y = np.meshgrid(x, y)Z1 = np.exp(-X**2 - Y**2)Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)Z = (Z1 - Z2) * 2fig, ax = plt.subplots()cont = ax.contourf(X,Y,Z, levels = 100)for c in cont.collections: c.set_rasterized(True)
This now returns:
MatplotlibDeprecationWarning: The collections attribute was deprecated in Matplotlib 3.8 and will be removed two minor releases later. for c in cont.collections:
It's not obvious to me how I should be rasterizing a contourf for matplotlib>=3.8 (regardless of whether the method I used above was sensical or not...at least it worked).
If I try to apply something similar to what is in the currentrasterization demo, (which I think resulted from#17708 ),
fig2, ax2 = plt.subplots()cont = ax2.contourf(X,Y,Z, levels = 100, rasterized=True)
then I get the following error:
UserWarning: The following kwargs were not used by contour: 'rasterized' cont = ax2.contourf(X,Y,Z, levels = 100, rasterized=True)
Suggested improvement
Include a paragraph and code snippet somewhere inhttps://matplotlib.org/stable/gallery/images_contours_and_fields/contourf_demo.html explaining how to rasterize contourf.
maybe include a description of how to rasterize directly in the documentation of contourf