1
0
mirror of https://github.com/GOSTSec/gostcoin.i2p synced 2025-02-06 03:44:37 +00:00
gostco.in/scripts/plot-gstrur.py

87 lines
2.6 KiB
Python
Raw Normal View History

2017-09-03 08:37:04 -04:00
#!/usr/bin/python3
# requirements: sudo pip3 install matplotlib
2017-09-04 11:45:30 -04:00
import matplotlib;matplotlib.use('Agg')
2017-09-03 08:37:04 -04:00
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from datetime import datetime, timedelta
import math
import json
import urllib
PLOT_TITLE = ''
Y_AXIS_NAME = 'RUR price'
PNG_THUMB_FILENAME = '../img/GSTRUR_graph_thumb.png'
PNG_FILENAME = '../img/GSTRUR_graph.png'
THUMB_DPI = 40 # thumbnail DPI
DPI = 120 # affects the size of output image
2017-09-03 08:37:04 -04:00
HISTORY_URL = 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=2'
2017-09-03 08:37:04 -04:00
PROXY_URL = 'http://localhost:4444'
def get_data_from_nvspc():
proxy_handler = urllib.request.ProxyHandler({
'http': PROXY_URL
})
opener = urllib.request.build_opener(proxy_handler)
response = opener.open(HISTORY_URL)
raw_result = response.read().decode()
data = reversed(json.loads(raw_result)['data']['l'])
return data
def adapt_data_for_plot(data):
oneline = {'x': [], 'y': [], }
secondline = {'x': [], 'y': [], }
dates = []
for i, chunk in enumerate(data):
spl_chunk = chunk['d'].split('|')
date = spl_chunk[0]
price_buy = spl_chunk[1]
price_diff = spl_chunk[2]
price_sell = float(price_buy) + float(price_diff)
date = datetime.strptime(date, '%y%m%d%H%M')
oneline['x'].append(i)
oneline['y'].append(price_sell)
secondline['x'].append(i)
secondline['y'].append(price_buy)
dates.append(date)
return oneline, secondline, dates
def draw_plot(oneline, secondline, dates):
fig, ax = plt.subplots()
ax.plot(oneline['x'], oneline['y'])
ax.plot(secondline['x'], secondline['y'])
N = len(dates)
ind = np.arange(N)
def format_date(x, pos=None):
thisind = np.clip(int(x + 0.5), 0, N - 1)
if thisind > N - 1: thisind = N - 1
return dates[thisind].strftime('%Y-%m-%d')
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
fig.autofmt_xdate()
plt.ylabel(Y_AXIS_NAME)
plt.title(PLOT_TITLE)
plt.grid(True)
2017-09-05 00:33:17 +05:00
plt.savefig(PNG_FILENAME,
bbox_inches='tight',
dpi=DPI,
transparent=True)
plt.savefig(PNG_THUMB_FILENAME,
bbox_inches='tight',
dpi=THUMB_DPI,
transparent=True)
2017-09-03 08:37:04 -04:00
def generate_graphic():
data = get_data_from_nvspc()
oneline, secondline, dates = adapt_data_for_plot(data)
draw_plot(oneline, secondline, dates)
if __name__ == "__main__":
generate_graphic()