为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中输出绘图时迭代线性回归(SciPy 和 MatPlotLib)

在 Python 中输出绘图时迭代线性回归(SciPy 和 MatPlotLib)

湖上湖 2022-06-22 15:39:54
尝试遍历一个 for 循环,该循环在 pandas 数据帧上运行 3 个回归,同时为每个变量打印一条线图。year = crime_df.iloc[:,0]violent_crime_rate = crime_df.iloc[:,3]murder_rate = crime_df.iloc[:,5]aggravated_assault_rate = crime_df.iloc[:,11]x_axis = [violentcrimerate, murderrate, aggravatedassaultrate]for x in x_axis:    slope, intercept, r_value, p_value, std_err = linregress(year, x)    fit = slope * year + intercept    fig, ax = plt.subplots()    fig.suptitle('x', fontsize=16, fontweight="bold")    ax.plot(year, x, linewidth=0, marker='o')    ax.plot(year, fit, 'b--')    plt.show()代码生成 3 个标题为“x”的图和不同的回归线,但我想知道如何为每个图设置相对于循环中每个变量的相对标题(和标签)。不确定如何从我引用的列表中检索变量名称。在字幕行中尝试过str(x),但返回的是列中的值而不是列表标题。
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

像这样的东西?


import numpy as np

import matplotlib.pyplot as plt


matrix = np.random.rand(4,12)  # emulate some data

crime_df = pd.DataFrame(matrix)# emulate some data 



year = crime_df.iloc[:,0]

violent_crime_rate = crime_df.iloc[:,3]

murder_rate = crime_df.iloc[:,5]

aggravated_assault_rate = crime_df.iloc[:,11]


names = ['violent_crime_rate','murder_rate','aggravated_assault_rate']


x_axis = [violent_crime_rate, murder_rate, aggravated_assault_rate]


def linregress(year,x):  #emulate some data

    return np.random.rand(5)



for ind, x in enumerate(x_axis):

    slope, intercept, r_value, p_value, std_err = linregress(year, x)

    fit = slope * year + intercept



    fig, ax = plt.subplots()


    fig.suptitle('x:'+str(names[ind]), fontsize=16, fontweight="bold")


    ax.plot(year, x, linewidth=0, marker='o', label = names[ind] + ':1')


    ax.plot(year, fit, 'b--', label = names[ind] + ':2')


    ax.legend()


    plt.show()


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号