matplotlib.pyplot.plot()不显示图形

时间:2016-08-27 05:56:48

标签: python matplotlib linear-regression

我正在学习Python,我有一个侧面项目,学习使用matplotlib.pyplot模块显示数据。以下是使用dates []和price []作为数据显示数据的示例。有谁知道为什么我们需要第5行和第6行?我很困惑为什么需要这一步来显示图表。

from sklearn import linear_model
import matplotlib.pyplot as plt

def showgraph(dates, prices):
  dates  = numpy.reshape(dates, (len(dates), 1))   # line 5
  prices = numpy.reshape(prices, (len(prices), 1)) # line 6

  linear_mod = linear_model.LinearRegression()
  linear_mod.fit(dates,prices)
  plt.scatter(dates,prices,color='yellow') 
  plt.plot(dates,linear_mod.predict(dates),color='green')
  plt.show()

3 个答案:

答案 0 :(得分:1)

在终端中尝试以下操作来检查后端:

import matplotlib
import matplotlib.pyplot
print matplotlib.backends.backend

如果它显示'agg',它是非交互式的,不会显示,但plt.savefig可以工作。

要显示绘图,您需要切换到TkAgg或Qt4Agg。

您需要在matplotlibrc文件中编辑后端。要在终端中打印其位置,请执行以下操作。

import matplotlib
matplotlib.matplotlib_fname()

更多关于matplotlibrc

答案 1 :(得分:0)

第5行和第6行将我假设的行向量(我不确定dataprices如何在此转换之前编码)转换为列向量。所以现在你有了这样的矢量。

[0,
 1, 
 2, 
 3]

这是linear_model.Linear_Regression.fit()期待的形式。在假设数据和价格是行向量的情况下进行绘图不需要重新整形。

答案 2 :(得分:0)

我的方法与您的方法完全一样,但仍然没有第5行和第6行显示是正确的。我认为那些线是不必要的。您似乎不需要fit()函数,因为您的输入数据是行格式。