[Matplotlib-users] How to turn off matplotlib DEBUG msgs

Mike Hagerty m.hagerty at isti.com
Tue Mar 20 20:35:16 EDT 2018


Looking at file:
.../python2.7/site-packages/matplotlib/__init__.py

I see the function _wrap() which seems to set the logLevel to DEBUG :

def _wrap(fmt, func, level=logging.DEBUG, always=True):
    """
    return a callable function that wraps func and reports its
    output through logger

    if always is True, the report will occur on every function
    call; otherwise only on the first time the function is called
    """
    ...

I'm not sure that obspy explicitly calls _wrap() on this module,
but that would explain the behavior I see where if I import matplotlib
directly I don't get the debug messages, but if I import any obspy
module (which loads matplotlib), I get all the debug messages.

If that's the case, then maybe obspy needs to set the logLevel
higher when loading the module (e.g., override the default
level=logging.DEBUG) ?


Cheers,
-Mike

On Tue, Mar 20, 2018 at 7:36 PM, Jody Klymak <jklymak at uvic.ca> wrote:

>
> On 20 Mar 2018, at 15:09, Mike Hagerty <m.hagerty at isti.com> wrote:
>
> Thanks, that seems to work.
>
> I was already getting the logger and setting the root logLevel - I thought
> that would
> be passed through but I guess matplotlib is configured earlier in the
> process.
>
>
> Matplotlib does NOT set the logging level.  So if nothing else sets the
> logging level, it will be the logging-module-default (logging.WARNING).  If
> it is being set to DEBUG, then something else you are importing is setting
> the default logging level; it shouldn’t.
>
> Cheers,   Jody
>
>
>
> Cheers,
> -Mike
>
> On Tue, Mar 20, 2018 at 5:37 PM, Jody Klymak <jklymak at uvic.ca> wrote:
>
>>
>> matplotlib now uses the standard python logging library.  You should ask
>> `obspy` if they are setting the default debug level for other packages.
>>
>> But for now, something like the following in your script should quiet
>> matplotlib down.
>>
>>
>> ```
>> import logging
>> mpl_logger = logging.getLogger(‘matplotlib’)
>> mpl_logger.setLevel(logging.WARNING)
>>
>> ```
>>
>> https://matplotlib.org/faq/troubleshooting_faq.html
>> https://docs.python.org/3/library/logging.html#module-logging
>>
>>
>> Cheers,  Jody
>>
>> > On 20 Mar 2018, at 14:21, Mike Hagerty <m.hagerty at isti.com> wrote:
>> >
>> > I recently installed the latest version of matplotlib via conda:
>> > # packages in environment:
>> > matplotlib                2.2.2                    py27_0    conda-forge
>> >
>> > Now, as soon as matplotlib is imported by another module, it generates
>> a ton of DEBUG messages (see below).
>> >
>> > How do I turn these off ??
>> >
>> > Oddly, if I use the interactive python and import matplotlib directly,
>> I don't get the messages, so it
>> > has something to do with how the code I'm using (obspy) imports the
>> matplotlib module.
>> >
>> > I'm using mac osx 10.10.5 and I get similar results with python2.7 and
>> python3.6 (conda) environments.
>> >
>> > Any advice would be appreciated.
>> >
>> > Cheers!
>> > -Mike
>> >
>> >
>> >
>> >
>> > >>> from obspy.taup import TauPyModel
>> > [  DEBUG] $HOME=/Users/mth
>> > [  DEBUG] matplotlib data path /usr/local/anaconda/envs/obspy
>> _3.6/lib/python3.6/site-packages/matplotlib/mpl-data
>> > [  DEBUG] loaded rc file /usr/local/anaconda/envs/obspy
>> _3.6/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
>> > [  DEBUG] matplotlib version 2.2.2
>> > [  DEBUG] interactive is False
>> > [  DEBUG] platform is darwin
>> > [  DEBUG] loaded modules: ['builtins', 'sys', '_frozen_importlib',
>> '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external',
>> '_io', 'marshal', 'posix', 'zipimport', 'encodings', 'codecs', '_codecs',
>> 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__',
>> 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno',
>> 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc',
>> '_sitebuiltins', 'sysconfig', '_sysconfigdata_m_darwin_darwin',
>> '_osx_support', 're', 'enum', 'types', 'functools', '_functools',
>> 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq',
>> 'itertools', 'reprlib', '_collections', 'weakref', 'collections.abc',
>> 'sre_compile', '_sre', 'sre_parse', 'sre_constants', '_locale', 'copyreg',
>> '_bootlocale', 'importlib', 'importlib._bootstrap',
>> 'importlib._bootstrap_external', 'warnings', 'importlib.util',
>> 'importlib.abc', 'importlib.machinery', 'contextlib', 'mpl_toolkits',
>> 'encodings.cp437', 'readline', 'atexit', 'rlcompleter', 'logging', 'time',
>> 'traceback', 'linecache', 'tokenize', 'token', 'string', '_string',
>> 'threading', 'lib', 'lib.libyaml', 'yaml', 'yaml.error', 'yaml.tokens',
>> 'yaml.events', 'yaml.nodes', 'yaml.loader', 'yaml.reader', 'yaml.scanner',
>> 'yaml.parser', 'yaml.composer', 'yaml.constructor', 'datetime', 'math',
>> '_datetime', 'base64', 'struct', '_struct', 'binascii', 'yaml.resolver',
>> 'yaml.dumper', 'yaml.emitter', 'yaml.serializer', 'yaml.representer',
>> 'yaml.cyaml', '_yaml', 'lib.liblog', 'lib.process_cmd', 'getopt',
>> 'gettext', 'locale', 'copy', 'obspy', '__future__', 'future',
>> 'future.builtins', 'future.builtins.iterators', 'future.utils', 'numbers',
>> 'inspect', 'ast', '_ast', 'dis', 'opcode', '_opcode',
>> 'future.builtins.misc', 'requests', 'urllib3', 'urllib3.connectionpool',
>> 'socket', '_socket', 'selectors', 'select', 'urllib3.exceptions',
>> 'urllib3.packages', 'urllib3.packages.ssl_match_hostname', 'ssl',
>> 'ipaddress', 'textwrap', '_ssl', 'urllib3.packages.six',
>> 'urllib3.packages.six.moves', 'http', 'http.client', 'email',
>> 'email.parser', 'email.feedparser', 'email.errors', 'email._policybase',
>> 'email.header', 'email.quoprimime', 'email.base64mime', 'email.charset',
>> 'email.encoders', 'quopri', 'email.utils', 'random', 'hashlib', '_hashlib',
>> '_blake2', '_sha3', 'bisect', '_bisect', '_random', 'urllib',
>> 'urllib.parse', 'email._parseaddr', 'calendar', 'email.message', 'uu',
>> 'email._encoded_words', 'email.iterators', 'urllib3.packages.six.moves.http_client',
>> 'queue', 'urllib3.connection', 'urllib3.util', 'urllib3.util.connection',
>> 'urllib3.util.wait', 'urllib3.util.selectors', 'urllib3.util.request',
>> 'urllib3.util.response', 'urllib3.util.ssl_', 'hmac',
>> 'urllib3.util.timeout', 'urllib3.util.retry', 'urllib3.util.url',
>> 'urllib3._collections', 'urllib3.request', 'urllib3.filepost', 'uuid',
>> 'ctypes', '_ctypes', 'ctypes._endian', 'ctypes.util', 'shutil', 'fnmatch',
>> 'zlib', 'bz2', '_compression', '_bz2', 'lzma', '_lzma', 'pwd', 'grp',
>> 'subprocess', 'signal', '_posixsubprocess', 'ctypes.macholib',
>> 'ctypes.macholib.dyld', 'ctypes.macholib.framework',
>> 'ctypes.macholib.dylib', 'urllib3.fields', 'mimetypes',
>> 'urllib3.packages.six.moves.urllib', 'urllib3.packages.six.moves.urllib.parse',
>> 'urllib3.response', 'urllib3.poolmanager', 'chardet', 'chardet.compat',
>> 'chardet.universaldetector', 'chardet.charsetgroupprober', 'chardet.enums',
>> 'chardet.charsetprober', 'chardet.escprober', 'chardet.codingstatemachine',
>> 'chardet.escsm', 'chardet.latin1prober', 'chardet.mbcsgroupprober',
>> 'chardet.utf8prober', 'chardet.mbcssm', 'chardet.sjisprober',
>> 'chardet.mbcharsetprober', 'chardet.chardistribution', 'chardet.euctwfreq',
>> 'chardet.euckrfreq', 'chardet.gb2312freq', 'chardet.big5freq',
>> 'chardet.jisfreq', 'chardet.jpcntx', 'chardet.eucjpprober',
>> 'chardet.gb2312prober', 'chardet.euckrprober', 'chardet.cp949prober',
>> 'chardet.big5prober', 'chardet.euctwprober', 'chardet.sbcsgroupprober',
>> 'chardet.sbcharsetprober', 'chardet.langcyrillicmodel',
>> 'chardet.langgreekmodel', 'chardet.langbulgarianmodel',
>> 'chardet.langthaimodel', 'chardet.langhebrewmodel', 'chardet.hebrewprober',
>> 'chardet.langturkishmodel', 'chardet.version', 'requests.exceptions',
>> 'urllib3.contrib', 'urllib3.contrib.pyopenssl', 'OpenSSL',
>> 'OpenSSL.crypto', 'six', 'cryptography', 'cryptography.__about__',
>> 'cryptography.x509', 'cryptography.x509.certificate_transparency',
>> 'cryptography.x509.base', 'cryptography.utils', 'cryptography.hazmat',
>> 'cryptography.hazmat.primitives', 'cryptography.hazmat.primitives.asymmetric',
>> 'cryptography.hazmat.primitives.asymmetric.dsa', '
>> cryptography.hazmat.primitives.asymmetric.ec',
>> 'cryptography.hazmat.primitives.asymmetric.rsa',
>> 'cryptography.exceptions', 'cryptography.hazmat.backends',
>> 'cryptography.hazmat.backends.interfaces', 'cryptography.x509.extensions',
>> 'asn1crypto', 'asn1crypto.version', 'asn1crypto.keys',
>> 'asn1crypto._elliptic_curve', 'asn1crypto._int', 'platform',
>> 'asn1crypto.util', 'asn1crypto._errors', 'asn1crypto._iri',
>> 'encodings.idna', 'stringprep', 'unicodedata', 'asn1crypto._types',
>> 'asn1crypto._ordereddict', 'asn1crypto._ffi', 'asn1crypto._perf',
>> 'asn1crypto._perf._big_num_ctypes', 'asn1crypto.algos',
>> 'asn1crypto.core', 'asn1crypto._teletex_codec', 'asn1crypto.parser',
>> 'cryptography.hazmat.primitives.constant_time',
>> 'cryptography.hazmat.bindings', '_cffi_backend', '_constant_time.lib',
>> '_constant_time', 'cryptography.hazmat.bindings._constant_time',
>> 'cryptography.hazmat.primitives.serialization',
>> 'cryptography.x509.general_name', 'idna', 'idna.package_data',
>> 'idna.core', 'idna.idnadata', 'idna.intranges', 'six.moves', '
>> cryptography.x509.name', 'cryptography.x509.oid',
>> 'cryptography.hazmat.primitives.hashes', 'OpenSSL._util',
>> 'cryptography.hazmat.bindings.openssl', 'cryptography.hazmat.bindings.openssl.binding',
>> '_openssl.lib', '_openssl', 'cryptography.hazmat.bindings._openssl',
>> 'cryptography.hazmat.bindings.openssl._conditional', 'OpenSSL.SSL',
>> 'OpenSSL.version', 'cryptography.hazmat.backends.openssl',
>> 'cryptography.hazmat.backends.openssl.backend',
>> 'cryptography.hazmat.backends.openssl.aead',
>> 'cryptography.hazmat.backends.openssl.ciphers',
>> 'cryptography.hazmat.primitives.ciphers', 'cryptography.hazmat.primitives.ciphers.base',
>> 'cryptography.hazmat.primitives.ciphers.modes',
>> 'cryptography.hazmat.backends.openssl.cmac',
>> 'cryptography.hazmat.primitives.mac', 'cryptography.hazmat.backends.openssl.decode_asn1',
>> 'cryptography.hazmat.backends.openssl.dh', 'cryptography.hazmat.primitives.asymmetric.dh',
>> 'cryptography.hazmat.backends.openssl.dsa',
>> 'cryptography.hazmat.backends.openssl.utils',
>> 'cryptography.hazmat.primitives.asymmetric.utils', '
>> cryptography.hazmat.backends.openssl.ec', 'cryptography.hazmat.backends.openssl.encode_asn1',
>> 'cryptography.hazmat.backends.openssl.hashes',
>> 'cryptography.hazmat.backends.openssl.hmac',
>> 'cryptography.hazmat.backends.openssl.rsa',
>> 'cryptography.hazmat.primitives.asymmetric.padding',
>> 'cryptography.hazmat.backends.openssl.x25519',
>> 'cryptography.hazmat.primitives.asymmetric.x25519',
>> 'cryptography.hazmat.backends.openssl.x509',
>> 'cryptography.hazmat.primitives.ciphers.algorithms',
>> 'cryptography.hazmat.primitives.kdf', 'cryptography.hazmat.primitives.kdf.scrypt',
>> 'urllib3.packages.backports', 'urllib3.packages.backports.makefile',
>> 'requests.__version__', 'requests.utils', 'cgi', 'html', 'html.entities',
>> 'tempfile', 'requests.certs', 'certifi', 'certifi.core',
>> 'requests._internal_utils', 'requests.compat', 'json', 'json.decoder',
>> 'json.scanner', '_json', 'json.encoder', 'urllib.request', 'urllib.error',
>> 'urllib.response', '_scproxy', 'http.cookiejar', 'http.cookies',
>> 'requests.cookies', 'requests.structures', 'requests.packages',
>> 'requests.packages.urllib3', 'requests.packages.urllib3.connectionpool',
>> 'requests.packages.urllib3.exceptions', 'requests.packages.urllib3.packages',
>> 'requests.packages.urllib3.packages.ssl_match_hostname',
>> 'requests.packages.urllib3.packages.six', 'requests.packages.urllib3.packages.six.moves',
>> 'requests.packages.urllib3.packages.six.moves.http_client',
>> 'requests.packages.urllib3.connection', 'requests.packages.urllib3.util',
>> 'requests.packages.urllib3.util.connection',
>> 'requests.packages.urllib3.util.wait', 'requests.packages.urllib3.util.selectors',
>> 'requests.packages.urllib3.util.request', 'requests.packages.urllib3.util.response',
>> 'requests.packages.urllib3.util.ssl_', 'requests.packages.urllib3.util.timeout',
>> 'requests.packages.urllib3.util.retry', 'requests.packages.urllib3.util.url',
>> 'requests.packages.urllib3._collections', 'requests.packages.urllib3.request',
>> 'requests.packages.urllib3.filepost', 'requests.packages.urllib3.fields',
>> 'requests.packages.urllib3.packages.six.moves.urllib',
>> 'requests.packages.urllib3.packages.six.moves.urllib.parse',
>> 'requests.packages.urllib3.response', 'requests.packages.urllib3.poolmanager',
>> 'requests.packages.urllib3.contrib', 'requests.packages.urllib3.contrib.pyopenssl',
>> 'requests.packages.urllib3.packages.backports',
>> 'requests.packages.urllib3.packages.backports.makefile',
>> 'requests.packages.idna', 'requests.packages.idna.package_data',
>> 'requests.packages.idna.core', 'requests.packages.idna.idnadata',
>> 'requests.packages.idna.intranges', 'requests.packages.chardet', '
>> requests.packages.chardet.compat', 'requests.packages.chardet.universaldetector',
>> 'requests.packages.chardet.charsetgroupprober',
>> 'requests.packages.chardet.enums', 'requests.packages.chardet.charsetprober',
>> 'requests.packages.chardet.escprober', 'requests.packages.chardet.codingstatemachine',
>> 'requests.packages.chardet.escsm', 'requests.packages.chardet.latin1prober',
>> 'requests.packages.chardet.mbcsgroupprober',
>> 'requests.packages.chardet.utf8prober', 'requests.packages.chardet.mbcssm',
>> 'requests.packages.chardet.sjisprober', 'requests.packages.chardet.mbcharsetprober',
>> 'requests.packages.chardet.chardistribution',
>> 'requests.packages.chardet.euctwfreq', 'requests.packages.chardet.euckrfreq',
>> 'requests.packages.chardet.gb2312freq', 'requests.packages.chardet.big5freq',
>> 'requests.packages.chardet.jisfreq', 'requests.packages.chardet.jpcntx',
>> 'requests.packages.chardet.eucjpprober', 'requests.packages.chardet.gb2312prober',
>> 'requests.packages.chardet.euckrprober', 'requests.packages.chardet.cp949prober',
>> 'requests.packages.chardet.big5prober', 'requests.packages.chardet.euctwprober',
>> 'requests.packages.chardet.sbcsgroupprober',
>> 'requests.packages.chardet.sbcharsetprober',
>> 'requests.packages.chardet.langcyrillicmodel',
>> 'requests.packages.chardet.langgreekmodel',
>> 'requests.packages.chardet.langbulgarianmodel',
>> 'requests.packages.chardet.langthaimodel', 'requests.packages.chardet.langhebrewmodel',
>> 'requests.packages.chardet.hebrewprober', 'requests.packages.chardet.langturkishmodel',
>> 'requests.packages.chardet.version', 'requests.models',
>> 'requests.hooks', 'requests.auth', 'requests.status_codes', 'requests.api',
>> 'requests.sessions', 'requests.adapters', 'urllib3.contrib.socks', 'socks',
>> 'obspy.core', 'obspy.core.utcdatetime', 'obspy.core.util',
>> 'obspy.core.util.attribdict', 'obspy.core.util.base', 'doctest',
>> 'argparse', 'difflib', 'pdb', 'cmd', 'bdb', 'code', 'codeop', 'glob',
>> 'pprint', 'unittest', 'unittest.result', 'unittest.util', 'unittest.case',
>> 'unittest.suite', 'unittest.loader', 'unittest.main', 'unittest.runner',
>> 'unittest.signals', 'numpy', 'numpy._globals', 'numpy.__config__',
>> 'numpy.version', 'numpy._import_tools', 'numpy.add_newdocs', 'numpy.lib', '
>> numpy.lib.info', 'numpy.lib.type_check', 'numpy.core', 'numpy.core.info',
>> 'numpy.core.multiarray', 'numpy.core.umath', 'numpy.core._internal',
>> 'numpy.compat', 'numpy.compat._inspect', 'numpy.compat.py3k', 'pathlib',
>> 'ntpath', 'numpy.core.numerictypes', 'numpy.core.numeric', 'pickle',
>> '_compat_pickle', '_pickle', 'numpy.core.fromnumeric',
>> 'numpy.core._methods', 'numpy.core.arrayprint', 'numpy.core.defchararray',
>> 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base',
>> 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.shape_base',
>> 'numpy.core.einsumfunc', 'numpy.testing', 'numpy.testing.decorators',
>> 'numpy.testing.nose_tools', 'numpy.testing.nose_tools.decorators',
>> 'numpy.testing.nose_tools.utils', 'numpy.lib.utils',
>> 'numpy.testing.nosetester', 'numpy.testing.nose_tools.nosetester',
>> 'numpy.testing.utils', 'numpy.lib.ufunclike', 'numpy.lib.index_tricks',
>> 'numpy.lib.function_base', 'numpy.lib.twodim_base', 'numpy.matrixlib',
>> 'numpy.matrixlib.defmatrix', 'numpy.lib.stride_tricks', 'numpy.lib.mixins',
>> 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.scimath',
>> 'numpy.lib.polynomial', 'numpy.linalg', 'numpy.linalg.info',
>> 'numpy.linalg.linalg', 'numpy.linalg.lapack_lite',
>> 'numpy.linalg._umath_linalg', 'numpy.lib.arraysetops', 'numpy.lib.npyio',
>> 'numpy.lib.format', 'numpy.lib._datasource', 'numpy.lib._iotools',
>> 'numpy.lib.financial', 'decimal', '_decimal', 'numpy.lib.arrayterator',
>> 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy._distributor_init',
>> 'numpy._mklinit', 'numpy.fft', 'numpy.fft.info', 'numpy.fft.fftpack',
>> 'numpy.fft.fftpack_lite', 'numpy.fft.helper', 'numpy.polynomial',
>> 'numpy.polynomial.polynomial', 'numpy.polynomial.polyutils',
>> 'numpy.polynomial._polybase', 'numpy.polynomial.chebyshev',
>> 'numpy.polynomial.legendre', 'numpy.polynomial.hermite',
>> 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.random', '
>> numpy.random.info', 'cython_runtime', 'mtrand', 'numpy.random.mtrand',
>> 'numpy.ctypeslib', 'numpy.ma', 'numpy.ma.core', 'numpy.ma.extras',
>> 'pkg_resources', 'zipfile', 'pkgutil', 'plistlib', 'xml', 'xml.parsers',
>> 'xml.parsers.expat', 'pyexpat.errors', 'pyexpat.model', 'pyexpat',
>> 'xml.parsers.expat.model', 'xml.parsers.expat.errors',
>> 'pkg_resources.extern', 'pkg_resources._vendor',
>> 'pkg_resources.extern.six', 'pkg_resources._vendor.six',
>> 'pkg_resources.extern.six.moves', 'pkg_resources._vendor.six.moves',
>> 'pkg_resources.py31compat', 'pkg_resources.extern.appdirs',
>> 'pkg_resources._vendor.packaging.__about__',
>> 'pkg_resources.extern.packaging', 'pkg_resources.extern.packaging.version',
>> 'pkg_resources.extern.packaging._structures',
>> 'pkg_resources.extern.packaging.specifiers',
>> 'pkg_resources.extern.packaging._compat', 'pkg_resources.extern.packaging.requirements',
>> 'pkg_resources.extern.pyparsing', 'pkg_resources.extern.six.moves.urllib',
>> 'pkg_resources.extern.packaging.markers', 'obspy.core.util.misc',
>> 'obspy.core.util.obspy_types', 'obspy.core.util.testing', 'distutils',
>> 'distutils.version', 'lxml', '_cython_0_28', 'lxml.etree',
>> 'lxml._elementpath', 'gzip', 'obspy.core.util.version', 'obspy.core.trace',
>> 'decorator', 'obspy.core.compatibility', 'unittest.mock', 'configparser',
>> 'obspy.core.util.decorator', 'tarfile', 'obspy.core.util.deprecation_helpers',
>> 'obspy.core.stream', 'obspy.scripts', 'obspy.scripts.runtests',
>> 'obspy.core.event', 'obspy.core.event.base', 'obspy.core.event.header',
>> 'obspy.core.event.catalog', 'obspy.imaging', 'obspy.imaging.cm',
>> 'matplotlib', 'distutils.sysconfig', 'distutils.errors',
>> 'matplotlib.cbook', 'matplotlib.cbook.deprecation',
>> 'matplotlib.cbook._backports', 'matplotlib.compat',
>> 'matplotlib.compat.subprocess', 'matplotlib.rcsetup',
>> 'matplotlib.testing', 'matplotlib.fontconfig_pattern', 'pyparsing',
>> 'matplotlib.colors', 'matplotlib._color_data', 'cycler',
>> 'six.moves.urllib', 'six.moves.urllib.request', 'matplotlib._version',
>> 'dateutil', 'dateutil._version']
>> > [  DEBUG] CACHEDIR=/Users/mth/.matplotlib
>> > [  DEBUG] Using fontManager instance from /Users/mth/.matplotlib/fontLis
>> t.json
>> >
>> > _______________________________________________
>> > Matplotlib-users mailing list
>> > Matplotlib-users at python.org
>> > https://mail.python.org/mailman/listinfo/matplotlib-users
>>
>> --
>> Jody Klymak
>> http://web.uvic.ca/~jklymak/
>>
>>
>>
>>
>>
>>
>
> --
> Jody Klymak
> http://web.uvic.ca/~jklymak/
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20180320/1f76788d/attachment-0001.html>


More information about the Matplotlib-users mailing list