簡體   English   中英

Python 分散 plot 和 matplotlib

[英]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()

結果:

在此輸入圖像描述

這樣做:

plt.scatter(x,y)
x = sorted(x) 
plt.plot(x,p(x),"r--") 

在此輸入圖像描述

訣竅是在繪制線條之前對x值進行排序。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM