Как добавить гистограмму громкости в Python? - PullRequest
0 голосов
/ 06 мая 2018

Здравствуйте, я делаю этот код, чтобы увидеть свечную диаграмму в криптовалютах на Bittrex, но я хотел бы добавить объем. Как я могу это сделать ?

В начале своего кода я получаю данные из URL-адреса JSON, который позволяет мне иметь график подсвечника, а когда я получаю данные, я сохраняю объем в float(data['result'][i]['V']) но я не знаю, как изобразить объем ...

Вот мой код:

import urllib2
import json
from matplotlib.finance import candlestick2_ohlc
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import datetime as datetime
import numpy as np

l = []
date = []
date_intermediaire = []

response = urllib2.urlopen('https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=BTC-ETH&tickInterval=thirtyMin&_=')
data = json.load(response)
print data


for i in range(len(data['result'])-95,len(data['result'])):
    append_me = float(data['result'][i]['O']), float(data['result'][i]['H']), float(data['result'][i]['L']), float(data['result'][i]['C']), float(data['result'][i]['V'])
    l.append((append_me))
    date.append(data['result'][i]['T'])

ohlc = np.array(l, dtype=[('open', '<f4'), ('high', '<f4'), ('low', '<f4'), ('close', '<f4'), ('volume', '<f4')])


for i in range(0,len(date)):
    date[i] = datetime.datetime.strptime(date[i], "%Y-%m-%dT%H:%M:%S")
    date_intermediaire.append((date[i]-datetime.datetime(1970,1,1)).total_seconds())




xdate = [datetime.datetime.fromtimestamp(i) for i in date_intermediaire]




fig, ax = plt.subplots()
candlestick2_ohlc(ax,ohlc['open'],ohlc['high'],ohlc['low'],ohlc['close'],width=0.6)



ax.xaxis.set_major_locator(ticker.MaxNLocator(6))


def mydate(x,pos):
    try:
        return xdate[int(x)]
    except IndexError:
        return ''


ax.xaxis.set_major_formatter(ticker.FuncFormatter(mydate))

fig.autofmt_xdate()
fig.tight_layout()
plt.savefig("test.png")

Это результаты моего кода, пока:

candlesticks

Ответы [ 2 ]

0 голосов
/ 16 мая 2019
ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1, sharex=ax1)

Удобный способ разбить график, чтобы вы могли поместить объем внизу, а свечи вверху

0 голосов
/ 06 мая 2018

Я хотел бы добавить объем. Как я могу это сделать?

Добавьте «вторичную» ось Y + нанесите против нее объем-с

Это стандартный способ безопасной установки суперпозиции двух разных графиков на одном макете.

ax2 = ax1.twinx() # this setting does the job

Проверьте подробности в документации и примеры о том, как это сделать. enter image description here


Как прокомментировано ниже:

Либо можно «составить» макет без пробелов из двух вспомогательных участков, либо лучше установить обязательное масштабирование, чтобы разделить базу по оси X.

enter image description here

(pyplot инструмент разрешает делать это
как ax2 = fig1.add_subplot( 111, sharex = ax1, frameon = False ),
очень хорошо выполнимо несколькими способами, просто продолжайте идти, чтобы настроить параметры и отшлифовать отметки и метки ax1 и ax2, чтобы лучше соответствовать вашему вкусу)

...