Greetings.  We (the group that I work with) have "inherited" some Python
scripts that were written years ago, using Python 2.

We're trying to upgrade the scripts so that they work in our current
environment:

    OS: Ubuntu 24.04.2 LTS
    
    $ python --version
    Python 3.11.13
    
    >>> matplotlib.__version__
    '3.10.0'


The first script that we looked at has a line:

    cs = plt.contourf(X, Y, data, LevelsNumber,
                  cmap=plt.cm.nipy_spectral, norm=norm).collections

If I run that script with python 3, I get a warning:

    MatplotlibDeprecationWarning: The collections attribute was
    deprecated in Matplotlib 3.8 and will be removed two minor
    releases later.
    cmap=plt.cm.nipy_spectral, norm=norm).collections

I also get the following error:

    paths = cs.get_paths()
            ^^^^^^^^^^^^
    AttributeError: 'list' object has no attribute 'get_paths'

The "paths" object that I get appears to be no more than a collection of
geometric factors, i.e., without additional attributes such as color, for
instance, and statements such as the following fail:

    bgra_array = 255*paths[i].get_facecolor()[0]

    AttributeError: 'Path' object has no attribute 'get_facecolor'

Unfortunately, all the suggestions that I've found to remedy this suggest
using the "collections" attribute, which is already in the code, and which as
I noted above, has been deprecated (maybe eliminated -- 3.10 vs. 3.8) now.

If you have any suggestions about this, please pass 'em along.  Thanks.

-- Michael
-- 
https://mail.python.org/mailman3//lists/python-list.python.org

Reply via email to