我有一个python散点图,我想在上面画一条趋势线。从我在互联网上找到的各种例子中学习如何绘制趋势线,我的代码如下:
import matplotlib.pyplot as plt
import numpy as np
x=np.array([9.80,13.20,13.46,14.09,13.96,10.77,8.79,8.61,8.83,11.08,10.13,12.40,9.90,10.96,12.75,11.79,11.79,12.38,12.78,13.08,12.83,12.57,12.96,12.90,12.91,13.67,12.83,12.50,12.42,12.83,12.82,12.70,12.60,12.90,13.20])
y=np.array([0.0706,0.0969,0.0997,0.1031,0.0848,0.1044,0.0815,0.1030,0.0783,0.0970,0.1193,0.0796,0.0697,0.0738,0.0895,0.0912,0.0887,0.0973,0.0942,0.1052,0.0984,0.0965,0.0903,0.0876,0.1071,0.0872,0.0857,0.0967,0.0926,0.0837,0.0967,0.0935,0.0946,0.0930,0.0758
])
plt.scatter(x, y)
fit = np.polyfit(x, y, deg=4)
p = np.poly1d(fit)
plt.plot(x,p(x),"r--")
plt.show()
但是结果线不是曲线,而是线的混合。有人能解释一下我的错误吗?
3条答案
按热度按时间0yg35tkg1#
我认为这是因为
x
值没有排序。看看这段代码:结果:
xpcnnkqh2#
这将:
诀窍是在
x
值上绘制线之前对它们进行排序。bmvo0sr53#
2018年12月18日,2018年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019年12月,2019日,2019年11月,2019年11月,2019年11日,2019年11月,2019年11日,2019年11月,2019年11月,2019年11日,2019年11月,2019年11
df_entries = df. groupby(["Year"]). count(). reset_index()moving_avg = df_entries. rolling(window = 5). mean()
cum_sum [:5]
sns.散点图(x ="Year",y ="ID",size ="Medal",hue ="Medal",data = df_medals [df_medals ["Medal"]!="None"])sns. linepot(x ="Year",y ="ID",data = cum_sum)