提问者:小点点

Matplotlib-如何绘制给定散点图的真实值和预测值之间的垂直线?[重复]


真实值和预测值以千位数表示。我的方法是,因为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()

有没有其他方法可以让每对标记之间有精确的线条?

提前谢谢。


共1个答案

匿名用户

切换到轴。vlines对于此用例:

  1. vlines使用数据坐标而不是图形分数

因此,您可以通过将原始数组直接传递到ax1.vlines来避免任何缩放/循环:

ax1.vlines(np.arange(50), y_train.values[:50], preds_train_lm[:50])