如何在 matplotlib 上绘制散点趋势线? Python-熊猫
Posted
技术标签:
【中文标题】如何在 matplotlib 上绘制散点趋势线? Python-熊猫【英文标题】:How can I draw scatter trend line on matplot? Python-Pandas 【发布时间】:2017-05-28 20:59:53 【问题描述】:我想在 matplot 上画一条散点趋势线。我该怎么做?
Python
import pandas as pd
import matplotlib.pyplot as plt
csv = pd.read_csv('/tmp/test.csv')
data = csv[['fee', 'time']]
x = data['fee']
y = data['time']
plt.scatter(x, y)
plt.show()
CSV
fee,time
100,650
90,700
80,860
70,800
60,1000
50,1200
时间是整数值。
散点图
【问题讨论】:
对不起,我不熟悉这个词和熊猫。我想我找到了答案。我会更新我的问题。 How to add trendline in python matplotlib dot (scatter) graphs?的可能重复 【参考方案1】:很抱歉我自己找到了答案。
How to add trendline in python matplotlib dot (scatter) graphs?
Python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
csv = pd.read_csv('/tmp/test.csv')
data = csv[['fee', 'time']]
x = data['fee']
y = data['time']
plt.scatter(x, y)
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x,p(x),"r--")
plt.show()
图表
【讨论】:
【参考方案2】:带文字:
from sklearn.metrics import r2_score
plt.plot(x,y,"+", ms=10, mec="k")
z = np.polyfit(x, y, 1)
y_hat = np.poly1d(z)(x)
plt.plot(x, y_hat, "r--", lw=1)
text = f"$y=z[0]:0.3f\;xz[1]:+0.3f$\n$R^2 = r2_score(y,y_hat):0.3f$"
plt.gca().text(0.05, 0.95, text,transform=plt.gca().transAxes,
fontsize=14, verticalalignment='top')
【讨论】:
【参考方案3】:您也可以使用 Seaborn lmplot:
import seaborn as sns
import pandas as pd
from io import StringIO
textfile = StringIO("""fee,time
100,650
90,700
80,860
70,800
60,1000
50,1200""")
df = pd.read_csv(textfile)
_ = sns.lmplot(x='fee', y='time', data=df, ci=None)
输出:
【讨论】:
以上是关于如何在 matplotlib 上绘制散点趋势线? Python-熊猫的主要内容,如果未能解决你的问题,请参考以下文章