Original Predicted
0 6 1.56
1 12.2 3.07
2 0.8 2.78
3 5.2 3.54
.
我试过的代码:
def plotGraph(y_test,y_pred,regressorName):
if max(y_test) >= max(y_pred):
my_range = int(max(y_test))
else:
my_range = int(max(y_pred))
plt.scatter(y_test, y_pred, color='red')
plt.plot(range(my_range), range(my_range), 'o')
plt.title(regressorName)
plt.show()
return
我想要的图形:
但我目前的输出:
4条答案
按热度按时间ugmeyewa1#
您遇到的问题似乎是您将
y_test
和y_pred
混合到一个“plot”中(这里的意思是scatter()
函数)使用
scatter()
或plot()
函数(您也混淆了),第一个参数是x轴上的坐标,第二个参数是y轴上的坐标。所以1.)你需要一个
scatter()
只有y_test
,然后一个只有y_pred
。要做到这一点,你2.)需要有2D数据,或者在你的情况下,只是使用range()
功能为x轴使用索引。下面是一些随机数据的代码,可以让你开始:
这将给予如下内容:
iqih9akk2#
您正在绘制x轴上的
y_test
和y轴上的y_pred
。您希望在x轴上有一个公共数据点,而y_test
和y_pred
都在Y轴上。下面的代码片段将帮助您实现这一点。(其中true_value和predicted_value是要绘制的列表,common是用作公共x轴的列表。)2w2cym1i3#
我不能模拟你的代码,但我已经看到了一些点在第一眼。首先,在你想要的图形中的数据点是规范化的。你需要除以col中的所有数据点的最大值,这列。
您还应该检查文档中的图例功能,以添加像您想要的图形那样的图例。
xjreopfe4#
在matplotlib中(从代码中我假设你正在使用它)documentation有一个
matplotlib.pyplot.scatter
函数的信息,前两个参数是:x,y:float或array-like,shape(n,)
数据位置。
因此,对于您的应用程序,您需要在同一个图形上绘制两个散点图-使用
matplotlib.pyplot.scatter
两次。首先将y_test
作为y
和color='red'
,然后将y_pred
作为y
和color='blue'
不幸的是,您没有提供y_test和y_pred的x值,但是您还需要这些信息来在
plt.scatter
函数调用中定义x
。绘制两个散点图有点棘手,正如this answer所说,它需要引用
Axes
对象。例如(如答案所示):查看matplotlib文档和上面提到的答案以了解更多细节。