0

我正在尝试制作一个日志线图,其中我的 y 轴具有负值。我也想为它拟合一条最合适的线。

这是 lin-lin 的情节:

在此处输入图像描述

这是带有(错误)代码的情节:

plt.scatter(x, y, c='indianred', alpha=0.5)
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x,p(x),"-", color="grey", alpha=0.5)

plt.yscale('log')
plt.show()

在此处输入图像描述

即使绘图线是错误的,它也会按照我的意愿绘制 y 轴(我相信)。但是,如果我发表评论plt.plot(x,p(x),"-", color="grey", alpha=0.5),我会得到以下情节:

在此处输入图像描述

这与我以正确方式编写代码时得到的基本相同:

plt.scatter(x, y, c='indianred', alpha=0.5)
p = np.polyfit(x, np.log(y), 1)
plt.semilogy(x, np.exp(p[0] * x + p[1]), 'g--')
plt.yscale('log')
plt.show()

但由于我的负 y 值,我显然得到以下错误:

RuntimeWarning: invalid value encountered in log
  result = getattr(ufunc, method)(*inputs, **kwargs)

在此处输入图像描述

我有什么替代方法可以更好地看到我的 y 值?最佳拟合线不是必须的。我只是想更好地观察这些变量之间的关系(理论上应该是相关的)。

4

0 回答 0