4

我遇到了以下错误,我不知道为什么......

>>> x = np.matrix([[1,2,3,4]])
>>> x
matrix([[1, 2, 3, 4]])
>>> pcolor(x)
<matplotlib.collections.PolyCollection object at 0x108bb1810>
>>> show()
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 54, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/figure.py", line 1006, in draw
    func(*args)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 54, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.py", line 2086, in draw
    a.draw(renderer)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 54, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/collections.py", line 755, in draw
    return Collection.draw(self, renderer)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/artist.py", line 54, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/collections.py", line 244, in draw
    self.update_scalarmappable()
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/collections.py", line 609, in update_scalarmappable
    raise ValueError('Collections can only map rank 1 arrays')
ValueError: Collections can only map rank 1 arrays
4

1 回答 1

6

只需将您的矩阵转换为 ndarray:

import numpy as np
from matplotlib.pyplot import pcolor, show
x = np.matrix([[1,2,3,4]])
pcolor(np.array(x))
show()

你确定你首先需要一个矩阵吗?ndarray 更容易使用并且更常见。

于 2013-08-22T20:20:14.637 回答