2013-07-14 6 views
8

は私の問題です:私は多項式フィットをプロットするために曲線 'datetime'の形式で時系列にフィットしますか?ここ

z4 = polyfit(d, y, 3) 
p4 = poly1d(z4) 

を働く生産mktimeと日時を変換するようpolyfitは「しかし、私は、軸上の日時の記載が好きとのdidnなり、日時の値を取ることはありません。 t#それをどうやって行うのかを理解する。手伝って頂けますか?コードの

fig = plt.figure(1) 
cx= fig.add_subplot(111) 

xx = linspace(0, d[3], 100) 
pylab.plot(d, y, '+', xx, p4(xx),'-g') 
cx.plot(d, y,'+', color= 'b', label='blub') 
plt.errorbar(d, y, 
      yerr, 
      marker='.', 
      color='k', 
      ecolor='b', 
      markerfacecolor='b', 
      label="series 1", 
      capsize=0, 
      linestyle='') 

cx.grid() 
cx.set_ylim(0,0.03) 
plt.show() 

残り:

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib import axis 
from datetime import datetime 
from numpy import * 
import pylab 
import time 

私の最初の4時間データ点

x = [datetime(1978, 7, 7), 
    datetime(1980, 9, 26), 
    datetime(1983, 8, 1), 
    datetime(1985,8,8)] 

d=[] 
for i in x: 
    d.append(time.mktime(i.timetuple())) 

私の最初の4データは、エラーの

y = [0.00134328779552718, 
    0.00155187668863844, 
    0.0039431374327427, 
    0.00780037563783297] 

私の計算された標準偏差値バー

yerr = [0.0000137547160254577, 
     0.0000225670232594083, 
     0.000105623642510075, 
     0.00011343121508] 

答えて

10

datenumをプロットする代わりに、関連するdatetimesを使用してください。


import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import datetime as DT 
import time 

dates = [DT.datetime(1978, 7, 7), 
    DT.datetime(1980, 9, 26), 
    DT.datetime(1983, 8, 1), 
    DT.datetime(1985, 8, 8)] 

y = [0.00134328779552718, 
    0.00155187668863844, 
    0.0039431374327427, 
    0.00780037563783297] 


yerr = [0.0000137547160254577, 
     0.0000225670232594083, 
     0.000105623642510075, 
     0.00011343121508] 

x = mdates.date2num(dates) 

z4 = np.polyfit(x, y, 3) 
p4 = np.poly1d(z4) 

fig, cx = plt.subplots() 

xx = np.linspace(x.min(), x.max(), 100) 
dd = mdates.num2date(xx) 

cx.plot(dd, p4(xx), '-g') 
cx.plot(dates, y, '+', color='b', label='blub') 
cx.errorbar(dates, y, 
      yerr, 
      marker='.', 
      color='k', 
      ecolor='b', 
      markerfacecolor='b', 
      label="series 1", 
      capsize=0, 
      linestyle='') 

cx.grid() 
cx.set_ylim(0, 0.03) 
plt.show() 

利回りあなたのコード内の

enter image description here

注、xは、日付時刻のリストを表し、そしてdは数字を表します。私はそれを逆にすることに決めました:私は、datesのdatetimesのリストを使用し、xは数字を表します。

+0

あなたはちょうど私の一日を作った! :) どうもありがとうございます!! – Corins

関連する問題