【问题标题】:Plotting multiple Pandas autocorrelation plots in different plots在不同的图中绘制多个 Pandas 自相关图
【发布时间】:2021-02-09 20:19:44
【问题描述】:

我的问题与this one 有点相关。我有一个 Pandas DataFrame,我想分别为value 中的每个项目绘制自相关函数category。下面是我尝试过的,它在同一个图上绘制了所有自相关函数。如何分别绘制它们并控制绘图大小?

# Import libraries
import pandas as pd
from pandas.plotting import autocorrelation_plot

# Create DataFrame
df = pd.DataFrame({
    'category': ['sav','sav','sav','sav','sav','check','check','check','check','check','cd','cd','cd','cd','cd'],
    'value': [1.2,1.3,1.5,1.7,1.8, 10,13,17,20,25, 7,8,8.5,9,9.3]
})

# Loop through for each item in category and plot autocorrelation function
for cat in df['category'].unique():
    s = df[df['category']==cat]['value']
    s = s.diff().iloc[1:] #First order difference to de-trend
    ax = autocorrelation_plot(s)

【问题讨论】:

    标签: python pandas plot autocorrelation


    【解决方案1】:

    一种简单的方法是在每次迭代后使用plt.show() 强制渲染:

    # Loop through for each item in category and plot autocorrelation function
    for cat in df['category'].unique():
    
        # create new figure, play with size
        plt.figure(figsize=(10,6))
        s = df[df['category']==cat]['value']
        s = s.diff().iloc[1:] #First order difference to de-trend
        ax = autocorrelation_plot(s)
        plt.show()  # here
    

    也可以用groupby简化语法:

    for cat, data in df.groupby('category')['value']:
        plt.figure(figsize=(10,6))
    
        autocorrelation_plot(data.diff().iloc[1:])
    
        plt.title(cat)
        plt.show()
    

    【讨论】:

      猜你喜欢
      • 2022-08-09
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多