【问题标题】:How can I draw scatter trend line on matplot? Python-Pandas如何在 matplotlib 上绘制散点趋势线? Python-熊猫
【发布时间】: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

时间是整数值。

散点图

【问题讨论】:

标签: pandas numpy matplotlib


【解决方案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}\;x{z[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)
      

      输出:

      【讨论】:

        猜你喜欢
        • 2021-10-03
        • 2014-12-14
        • 2021-07-04
        • 2020-11-28
        • 2021-08-10
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        相关资源
        最近更新 更多