2017-07-29 16 views
0

私は日に算術演算を実行したかったので、私はこれらの日付を使用して浮動小数点数にこれをdatetime形式に変換する方法は?

idx_1 = 2017-06-07 00:00:00 
idx_2 = 2017-07-27 00:00:00 

を変換し、

x1 = time.mktime(idx_1.timetuple()) # returns float of dates 
>>> 1496773800.0 
x2 = time.mktime(idx_2.timetuple()) 
>>> 1501093800.0 
y1 = 155.98 
y2 = 147.07 

をプロットするために、次のコードを使用しています:

プロット
import datetime as dt 
    import time 
    import numpy as np 
    import matplotlib.pyplot as plt 
    x = [x1, x2] 
    y = [y1, y2] 
    Difference = x2 - x1 #this helps to end the plotted line at specific point 
    coefficients = np.polyfit(x, y, 1) 
    polynomial = np.poly1d(coefficients) 
    # the np.linspace lets you set number of data points, line length. 
    x_axis = np.linspace(x1, x2 + Difference, 3) # linspace(start, end, num) 
    y_axis = polynomial(x_axis) 
    plt.plot(x_axis, y_axis) 
    plt.plot(x[0], y[0], 'go') 
    plt.plot(x[1], y[1], 'go') 
    plt.show() 

enter image description here

floatではなくx軸に実際の日付をプロットするmatplotlibを作成するには?

どのような種類のヘルプも大変感謝しています。

答えて

0

datetimeオブジェクトからは、matplotlibのdate2numnum2date関数を数値との変換に使用できます。利点は、数値データがmatplotlib.datesロケータとフォーマッタによって理解されることです。

import datetime 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.dates 

idx_1 = datetime.datetime(2017,06,07,0,0,0) 
idx_2 = datetime.datetime(2017,07,27,0,0,0) 

idx = [idx_1, idx_2] 

y1 = 155.98 
y2 = 147.07 

x = matplotlib.dates.date2num(idx) 
y = [y1, y2] 
Difference = x[1] - x[0] #this helps to end the plotted line at specific point 
coefficients = np.polyfit(x, y, 1) 
polynomial = np.poly1d(coefficients) 
# the np.linspace lets you set number of data points, line length. 
x_axis = np.linspace(x[0], x[1] + Difference, 3) # linspace(start, end, num) 
y_axis = polynomial(x_axis) 
plt.plot(x_axis, y_axis) 
plt.plot(x[0], y[0], 'go') 
plt.plot(x[1], y[1], 'go') 

loc= matplotlib.dates.AutoDateLocator() 
plt.gca().xaxis.set_major_locator(loc) 
plt.gca().xaxis.set_major_formatter(matplotlib.dates.AutoDateFormatter(loc)) 
plt.gcf().autofmt_xdate() 
plt.show() 

enter image description here

+0

、答えるために時間を割いてくれてありがとう嬉しいです:) –

関連する問題