I assume you are concerned about the chaotic lines in the last plot.
Note that train_test_split shuffles the data, so you could sort the tensor before plotting:
X_train_torch_sorted, idx = torch.sort(X_train_torch, 0)
plt.plot(X_train_torch_sorted.detach().numpy(), coarse_preds[idx[:, 0]].detach().numpy(), color="g")