From f1ef4f42d4feb72a142c0d06da3f618157f6e4a4 Mon Sep 17 00:00:00 2001 From: xcps Date: Tue, 12 Sep 2017 23:37:25 +0500 Subject: [PATCH] Draw both plots from one script --- scripts/plot-gstbtc.py | 86 ----------------------------- scripts/{plot-gstrur.py => plot.py} | 52 +++++++++++------ 2 files changed, 34 insertions(+), 104 deletions(-) delete mode 100755 scripts/plot-gstbtc.py rename scripts/{plot-gstrur.py => plot.py} (62%) diff --git a/scripts/plot-gstbtc.py b/scripts/plot-gstbtc.py deleted file mode 100755 index 3fcbb14..0000000 --- a/scripts/plot-gstbtc.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/python3 - -# requirements: sudo pip3 install matplotlib - -import matplotlib;matplotlib.use('Agg') -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 = 'BTC price' -PNG_THUMB_FILENAME = '../img/GSTBTC_graph_thumb.png' -PNG_FILENAME = '../img/GSTBTC_graph.png' -THUMB_DPI = 40 # thumbnail DPI -DPI = 120 # affects the size of output image - -HISTORY_URL = 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=3' -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) - plt.savefig(PNG_FILENAME, - bbox_inches='tight', - dpi=DPI, - transparent=True) - plt.savefig(PNG_THUMB_FILENAME, - bbox_inches='tight', - dpi=THUMB_DPI, - transparent=True) - -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() diff --git a/scripts/plot-gstrur.py b/scripts/plot.py similarity index 62% rename from scripts/plot-gstrur.py rename to scripts/plot.py index 6bef6ef..2197adc 100755 --- a/scripts/plot-gstrur.py +++ b/scripts/plot.py @@ -11,22 +11,33 @@ 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 +RUR_CONFIG = { + 'plot_title': '', + 'y_axis_name': 'RUR price', + 'png_thumb_filename': '../img/GSTRUR_graph_thumb.png', + 'png_filename': '../img/GSTRUR_graph.png', + 'history_url': 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=2', +} + +BTC_CONFIG = { + 'plot_title': '', + 'y_axis_name': 'BTC price', + 'png_thumb_filename': '../img/GSTBTC_graph_thumb.png', + 'png_filename': '../img/GSTBTC_graph.png', + 'history_url': 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=3', +} + +THUMB_DPI = 40 # thumbnail DPI +DPI = 120 # affects the size of output image -HISTORY_URL = 'http://nvspc.i2p/api/dummy/gettradelog?e=5&c=500&bt=2' PROXY_URL = 'http://localhost:4444' -def get_data_from_nvspc(): +def get_data_from_nvspc(url): proxy_handler = urllib.request.ProxyHandler({ 'http': PROXY_URL }) opener = urllib.request.build_opener(proxy_handler) - response = opener.open(HISTORY_URL) + response = opener.open(url) raw_result = response.read().decode() data = reversed(json.loads(raw_result)['data']['l']) return data @@ -51,7 +62,7 @@ def adapt_data_for_plot(data): return oneline, secondline, dates -def draw_plot(oneline, secondline, dates): +def draw_plot(config, oneline, secondline, dates): fig, ax = plt.subplots() ax.plot(oneline['x'], oneline['y']) ax.plot(secondline['x'], secondline['y']) @@ -64,23 +75,28 @@ def draw_plot(oneline, secondline, dates): ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date)) fig.autofmt_xdate() - plt.ylabel(Y_AXIS_NAME) - plt.title(PLOT_TITLE) + plt.ylabel(config['y_axis_name']) + plt.title(config['plot_title']) plt.grid(True) - plt.savefig(PNG_FILENAME, + plt.savefig(config['png_filename'], bbox_inches='tight', dpi=DPI, transparent=True) - plt.savefig(PNG_THUMB_FILENAME, + plt.savefig(config['png_thumb_filename'], bbox_inches='tight', dpi=THUMB_DPI, transparent=True) -def generate_graphic(): - data = get_data_from_nvspc() +def generate_graphic(config): + data = get_data_from_nvspc(config['history_url']) oneline, secondline, dates = adapt_data_for_plot(data) - draw_plot(oneline, secondline, dates) + draw_plot(config, oneline, secondline, dates) + + +def generate_graphics(): + generate_graphic(RUR_CONFIG) + generate_graphic(BTC_CONFIG) if __name__ == "__main__": - generate_graphic() + generate_graphics()