[英]Python scatter plot and matplotlib
我在 python 中有一個散點圖 plot,我想在上面畫一條趨勢線。 從我在 inte.net 上找到的各種例子來學習如何繪制趨勢線,我的代碼如下:
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()
但是結果線不是曲線而是線的混合。 誰能解釋我的錯誤?
我認為這是因為x
值沒有排序。 看看這段代碼:
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 ])
# Here I sort x values and their corresponding y values
args = np.argsort(x)
x = x[args]
y = y[args]
plt.scatter(x, y)
fit = np.polyfit(x, y, deg=4)
p = np.poly1d(fit)
plt.plot(x,p(x),"r--")
plt.show()
結果:
df["Medal"].fillna("None",inplace=True) df["Medal_Int"] = df["Medal"] df["Medal_Int"].replace(["Gold","Silver","Bronze ","None"],[1,2,3,4],inplace=True) df_medals = df.groupby(["Year","Medal"]).count().reset_index()
df_entries = df.groupby([“年”]).count().reset_index() moving_avg = df_entries.rolling(window=5).mean()
總和[:5]
sns.scatterplot(x="Year",y="ID",size="Medal",hue="Medal",data=df_medals[df_medals["Medal"].="None"]) sns,lineplot(x ="年",y="編號",data=cum_sum)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.