Matplotlib 在每次执行时随机忽略传递的参数

Matplotlib randomly ignores passed parameters at each execution

我发现 Matplotlib 的一个非常奇怪的行为。我写了一个重现这个问题的小脚本,请检查 this gist repository 文件。

问题描述

要点中引用的文件绘制了两个 3D 直方图。这些图中的每一个都由嵌套的条形图(条形图内部的条形图)组成,它们在边缘颜色、大小和透明度(alpha)方面有所不同。

我觉得奇怪的是,运行多次使用此脚本会在每次 运行 处产生不同的情节。该脚本接受修改文件名的参数,我运行按以下方式

$ python plottest.py a
$ python plottest.py b
$ python plottest.py c
$ python plottest.py c
$ python plottest.py c

c 情节我不得不 运行 三次,直到数字变得与 b 运行 不同)

它导致了以下情节,完全相同的脚本创建了这三个情节

有时 alpha 参数被忽略(导致透明度不足),有时 edgecolor 参数被忽略(导致外条上没有黑边)。

问题

我发现很难实现一个可靠的脚本,如果我每次 运行 它都会导致不同的情节。这不是 Jupyter notebook,它只是一个普通的 Python 脚本。我试图删除 __pycache__ 目录但没有效果,参数仍然被随机忽略。

我想我做错了什么,我不明白 Matplotlib 绘制那些导致这种行为的轴的方式。也许更有经验的人可以对此发表评论。

我的环境

我的操作系统是

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.5
BuildVersion:   18F132

我的Python版本

$ python -V
Python 3.5.3

我的 Matplotlib 版本

$ pip show matplotlib
Name: matplotlib
Version: 3.0.3
Summary: Python plotting package
Home-page: http://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: /Users/marek/.pyenv/versions/3.5.3/lib/python3.5/site-packages
Requires: kiwisolver, numpy, python-dateutil, pyparsing, cycler
Required-by: seaborn, scikit-image, chemview, chemlab

@00 重现了这个问题,并注意到它不会持续存在于 Python 和 Matplotlib 的较新版本中。我更新了

$ python -V
Python 3.7.4

$ pip show matplotlib
Name: matplotlib
Version: 3.1.2
Summary: Python plotting package
Home-page: https://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: /Users/marek/.pyenv/versions/3.7.4/lib/python3.7/site-packages
Requires: cycler, python-dateutil, kiwisolver, pyparsing, numpy
Required-by: 

现在无论我 运行 多少次,脚本结果都是相同的,因此行为是可以预测的。感谢您的帮助!