0

次のスクリプトを実行しようとしました(python 2.7を使用):

import numpy as np
import matplotlib
print matplotlib.__version__

import matplotlib.pyplot as plt

plt.figure()
plt.pcolor(np.random.random((10,10)),shading="faceted")
plt.show()

出力を取得します。

1.1.1rc2
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    plt.pcolor(np.random.random((10,10)),shading="faceted")
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2413, in pcolor
    ret = ax.pcolor(*args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 7044, in pcolor
    if 'antialiaseds' not in kwargs and ec.lower() == "none":
AttributeError: 'tuple' object has no attribute 'lower'

/usr/lib/pymodules/python2.7/matplotlib/axes.py を見ると、次のように表示されます。

        if shading == 'faceted':
        edgecolors = 'k',
    else:
        edgecolors = 'none'
    if 'edgecolor' in kwargs:
        kwargs['edgecolors'] = kwargs.pop('edgecolor')
    ec = kwargs.setdefault('edgecolors', edgecolors)

    # aa setting will default via collections to patch.antialiased
    # unless the boundary is not stroked, in which case the
    # default will be False; with unstroked boundaries, aa
    # makes artifacts that are often disturbing.
    if 'antialiased' in kwargs:
        kwargs['antialiaseds'] = kwargs.pop('antialiased')
    if 'antialiaseds' not in kwargs and ec.lower() == "none":
            kwargs['antialiaseds'] = False

問題は、edgecolors = 'k' の後の "," にあるようです。このように、edgecolors は文字列ではなくタプルなので....

古いバージョンのmatplolibではこの問題はありませんでした

4

1 に答える 1

0

Matplotlib 1.2.1あなたのルーチンを使用することは私にとってうまくいきます。Axes.pyinmatplotlib 1.2.1には、お使いのバージョンの ではなく、次の行が含まれていますaxes.py

    if 'antialiaseds' not in kwargs and (is_string_like(ec) and
            ec.lower() == "none"):

matplotlib のインストールを更新する必要があると思います。

于 2013-06-28T08:58:33.480 に答える