如何在 Pandas 中绘制和标记多个自相关函数?
Posted
技术标签:
【中文标题】如何在 Pandas 中绘制和标记多个自相关函数?【英文标题】:How plot and label multiple autocorrelation functions in Pandas? 【发布时间】:2020-02-03 18:09:21 【问题描述】:我有几个变量,我想在一张图上查看它们的自相关函数。我可以做这个。但问题是我不确定如何创建图例以便知道哪个变量是哪个。
这是我的数据的样子:
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
参数。
【问题讨论】:
你的问题解决了吗? 【参考方案1】:我添加了一个标签变量来获取标签:
for variable in df.columns:
ax = autocorrelation_plot(df[variable], label = variable)
Stocks data
成功了
【讨论】:
【参考方案2】:试试这个代码:
for variable in df.columns:
ax = autocorrelation_plot(df[variable])
ax.legend(ax.get_lines())
autocorrelation_plot 返回一个 AxesSubplot
类型的对象,它允许您像使用 matplotlib 一样操作图形。因此,要添加图例,您只需将函数刚刚绘制的线条作为参数传递给它。
例如,使用此代码,我打印每条打印线的颜色,然后更改行的标签,添加字符串variable
:
i=0
for 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+=6
ax.legend(ax.get_lines())
【讨论】:
【参考方案3】:我即兴创作了来自@Massifox 的答案,我能够为自相关图定制一个图例
from matplotlib.lines import Line2D
plot_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'])
Example Autocorrelation Plot
【讨论】:
以上是关于如何在 Pandas 中绘制和标记多个自相关函数?的主要内容,如果未能解决你的问题,请参考以下文章