

1時間ごとにデータファイルがあり（例えは、2018010100、2018010101、2018010102・・・）、これを1か月分ほど読み込んでグラフを作成したいのですが、途中で強制終了してしまいます。おそらく読み込むデータ量が多すぎるためではないかと思うのですが、何かいい方法はないでしょうか？  
データは、x軸が時間、y軸が値となっており、以下のコードサンプルでは１Hzのデータとなっていますが、実際は100Hzの波形データです。

[code]

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import datetime
    from datetime import datetime
    from datetime import timedelta
    
    startymdh  = '2018070100'
    endymdh    = '2018070223'
    
    ymdh = startymdh
    
    #グラフ作成
    fig,ax = plt.subplots()
    
    #x軸の範囲
    ax.set_xlim(datetime.strptime(startymdh,'%Y%m%d%H'), datetime.strptime(endymdh,'%Y%m%d%H')+ timedelta(hours=1))
    
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d'))
    
    #1時間毎にファイル読み込み
    while ymdh <= endymdh :
    
        #x_data： スタート時刻から1秒ごとに3600要素のリストを生成
        x = pd.date_range(datetime.strptime(ymdh,'%Y%m%d%H'),
                    datetime.strptime(ymdh,'%Y%m%d%H')+ timedelta(hours=1)-timedelta(seconds=1), 
                    freq = 'S')
    
        #y_data： 0から(1+hour)の間で乱数を発生させて3600要素のリストを生成
        print (ymdh[8:10])
        y = np.random.randint(0,int(ymdh[8:10])+1,3600)
    
        #3プロット
        ax.plot(x, y, color='C0')
        #変数を1時間後にする
        ymdhtmp = datetime.strptime(ymdh,'%Y%m%d%H') + timedelta(hours=1)
        ymdh = ymdhtmp.strftime('%Y%m%d%H')
    else:
        #変数を1時間後にする
        ymdhtmp = datetime.strptime(ymdh,'%Y%m%d%H') + timedelta(hours=1)
        ymdh = ymdhtmp.strftime('%Y%m%d%H')
    #出力ファイル名
    plt.savefig('test.png')
    plt.close()
    
[/code]


CC BY-SA 4.0
2018-09-13T02:06:20.623
48342
2018-09-14T02:00:32.777
28856
question
python python3 matplotlib
大容量データでグラフを作成したいが強制終了する


質問のコードは、コードサンプルだと動作するので、メモリーを増やせばグラフの作成はできるのではないでしょうか。しかし、そのグラフは点の数が多すぎて（100☓60☓60☓24☓30
≒ 2億6千万にもなる）真っ黒(color='C0'にしているので真っ青)になってしまうと思います。

そういうことから、matplotlibに「データ読み込み→描画→データ開放→次時間のデータ読み込み→上書き描画→データ開放」という機能はないと思います。

PCのディスプレイの横の解像度は約`1000pixel`です。1ヶ月分のデータをグラフにしたい場合、1日当たりのpixel数は40なので、通常は時間データを使います。大きなサイズの用紙に印刷するとかして頑張っても10分データを表示できるぐらいです。

そのため、時系列データをグラフにする場合は、1時間、10分、1分毎等で基本統計量を計算してグラフにするのが出発点だと思います。

主な基本統計量には以下のようなものがあるので、必要なもの選択してグラフを書くようにしたらいいと思います。()内は、PandasのSeriesの対応する関数です。

有効データ数（count）  
平均（mean）  
平均絶対偏差（mad）  
標準偏差（std）  
不偏分散（var）  
中央値（median）  
最小値（min）  
最大値（max）


CC BY-SA 4.0
2018-09-13T05:11:23.227
48355
2018-09-14T02:00:32.777
2018-09-14T02:00:32.777
2238
15171
48342
answer