我正在学习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()
答案 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行将我假设的行向量(我不确定data
和prices
如何在此转换之前编码)转换为列向量。所以现在你有了这样的矢量。
[0,
1,
2,
3]
这是linear_model.Linear_Regression.fit()
期待的形式。在假设数据和价格是行向量的情况下进行绘图不需要重新整形。
答案 2 :(得分:0)
我的方法与您的方法完全一样,但仍然没有第5行和第6行显示是正确的。我认为那些线是不必要的。您似乎不需要fit()函数,因为您的输入数据是行格式。