Python: multiple qqplot in statsmodel

Viewed 832

I'm new to python. At moment, I'm trying to do qqplot in statsmodels, with data from a csv file. No idea on how to upload data file, so I capture part of it as picture. Here is the head part ofdata from csv. I want to plot multiple qqplots on one page with 2x2 style, but cannot get the plots correct. Having done much research, I think if it would be much helpful if people could give me some hints or tell me where the problem is.

    import numpy as np
    import pandas as pd
    import scipy.stats as scs
    import statsmodels.api as sm
    from pylab import plt
    plt.style.use('ggplot')
    import matplotlib as mpl

    symbols = ['SPY', 'GLD', 'AAPL.O', 'MSFT.O']
    raw = pd.read_csv('tr_eikon_eod_data.csv',
                    index_col=0, parse_dates=True)
    data = raw[symbols]
    data = data.dropna()
    log_returns = np.log(data / data.shift(1))


    fig, ax = plt.subplots(2, 2, figsize=(6,4))
       for sym in symbols:
          sm.qqplot(log_returns[sym].dropna(),line='s',ax=ax[sym])


    plt.grid(True)
    plt.xlabel('theoretical quantiles')
    plt.ylabel('sample quantiles')
    plt.title(sym)

    plt.show   

enter image description here apparently I cannot review the picture I have uploaded

1 Answers

This will create 2by2 plot (2 rows, 2 columns), haven't figured out how to add title for each plot tough. Basecially, take advantage of matplotlib.pyplot.figure properties.

import statsmodels.api as sm
import pylab

figure, axes = plt.subplots(2, 2, figsize=(10,8))

sm.qqplot(df.col_name1, line='s', ax = axes[0, 0])
sm.qqplot(numpy.ndarray, line='s', ax = axes[0, 1])
sm.qqplot(series3, line='s', ax = axes[1, 0])
sm.qqplot(df.col_name2, line='s', ax = axes[1, 1])
figure.suptitle('Multiple qq plots', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()
#pylab.show()
Related