真实值和预测值以千位数表示。我的方法是,因为ax。axvline()
只接受0和1范围内的ymin和ymax,我可以将每个y_true和y_pred除以10000,转换为小数。但我在上面看到的是一个混乱的情节。
我使用的代码很简单:
plt.style.use("default")
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 8))
ax1.scatter(np.arange(0, 50), y_train[:50], marker="o", label="True")
ax1.scatter(np.arange(0, 50), preds_train_lm[:50], marker="x", color="brown", label="Predicted")
for ix, v1, v2, in zip(np.arange(0, 50), y_train.values[:50], preds_train_lm[:50]):
ax1.axvline(x=ix, ymin=v1/10000, ymax=v2/10000)
ax1.legend()
有没有其他方法可以让每对标记之间有精确的线条?
提前谢谢。
切换到轴。vlines
对于此用例:
vlines
使用数据坐标而不是图形分数因此,您可以通过将原始数组直接传递到ax1.vlines
来避免任何缩放/循环:
ax1.vlines(np.arange(50), y_train.values[:50], preds_train_lm[:50])