如何在 Pandas 中绘制和标记多个自相关函数?

我有几个变量,我想在一张图上查看它们的自相关函数。我可以做这个。但问题是我不确定如何创建一个图例,以便我知道哪个变量是哪个。


这是我的数据的样子:


import pandas as pd 

from pandas.plotting import autocorrelation_plot

df = pd.DataFrame(data = {

    "Year": [y for y in range(1800, 2000)],

    "Var 1": [random.random() for i in range(200)], 

    "Var 2": [random.random() for i in range(200)], 

    "Var 3": [random.random() for i in range(200)]

})


df.set_index("Year")

现在这是我在一张图上绘制自相关函数的方法:


for variable in df.columns:

    autocorrelation_plot(df[variable])

问题是没有传说,所以我不知道哪个变量是哪个。


而且,autocorrelation_plot没有legend论据。


牛魔王的故事
浏览 112回答 3
3回答

函数式编程

我添加了一个标签变量来获取标签:for variable in df.columns:    ax = autocorrelation_plot(df[variable], label = variable)股票数据它奏效了

慕尼黑的夜晚无繁华

试试这个代码:for variable in df.columns:    ax = autocorrelation_plot(df[variable])ax.legend(ax.get_lines())autocorrelation_plot返回一个类型的对象,AxesSubplot它允许您像使用 matplotlib 一样操作图形。因此,要添加图例,您只需将函数刚刚绘制的线条作为参数传递。例如,使用此代码,我打印每条打印行的颜色,然后更改行的标签,添加字符串variable:i=0for variable in df.columns:    ax = autocorrelation_plot(df[variable])    print(variable, ax.get_lines()[-1].get_color())    for k in range(i, len(ax.get_lines())):        ax.get_lines()[k].set_label(f'{k}_{variable}')    i+=6ax.legend(ax.get_lines())

守候你守候我

我即兴创作了来自@Massifox 的答案,我能够为自相关图定制一个图例from matplotlib.lines import Line2Dplot_color = []for variable in df.columns:    ax = autocorrelation_plot(df[variable])    plot_color.append((ax.get_lines()[-1].get_color()))custom_lines = [Line2D([0],[0], color=plot_color [0], lw=2),                Line2D([0],[0], color=plot_color [1], lw=2),                Line2D([0],[0], color=plot_color [2], lw=2)]                ax.legend(custom_lines, ['label1', 'label2', 'label3'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python