使用matplotlib在Python中绘制数据

时间:2013-05-01 09:23:27

标签: python python-3.x matplotlib plot

我正在阅读“机器学习在行动中”。 在回归的第8章中, p.158,几乎没有代码可以将原始数据点和拟合线一起绘制。

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(xMat[:,1].flatten().A[0] , yMat.T[:, 0].flatten().A[0])

xCopy = xMat.copy()
xCopy.sort(0)
yHat = xCopy*ws
ax.plot(xCopy[:,1], yHat)
plt.show()

xCopy和yHat都是由numpy定义的矩阵对象。

当我使用Python 3.2时,运行此代码会抛出错误:

Traceback (most recent call last):
  File "F:\ML\AC\Regression.py", line 44, in <module>
    ax.plot(xCopy[:,1], yHat)
  File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 3998, in plot
    for line in self._get_lines(*args, **kwargs):
  File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 332, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 291, in _plot_args
    linestyle, marker, color = _process_plot_format(tup[-1])
  File "C:\Python32\lib\site-packages\matplotlib\axes.py", line 99, in _process_plot_format
    if fmt.find('--')>=0:
AttributeError: 'matrix' object has no attribute 'find'

但是使用Python 2.7,完全相同的代码剪辑工作正常。 numpy for 2.7和3.2之间有什么区别吗 或matplotlib库已将syntex从2.7更改为Python 3?

1 个答案:

答案 0 :(得分:2)

Python 3支持matplotlib is very new,因此您可能会遇到一些错误 - 这就是其中之一。

正如你所知,numpy和matplotlib对python 2.X的支持是好的,所以如果你不想遇到更多隐藏的'功能',我会坚持这一点。