In [1]:
import numpy as np
import pandas as pd
import plotly.graph_objs as go
from datetime import datetime 
from plotly.offline import init_notebook_mode, iplot
init_notebook_mode(connected=True)
#filename = 'coinmktcap-ticker.json'
url = 'https://api.coinmarketcap.com/v1/ticker/?limit=100'
colors = ['rgb(204,0,0)', 'rgb(38,77,0)', 'rgb(38,77,0)']
day_vol_threshold = 5000  # Only want trading vol >= $5K
#df = pd.read_json('../data/{}'.format(filename))
df = pd.read_json(url)
df = df[df['24h_volume_usd'].ge(day_vol_threshold)]
layout = go.Layout(
    title='Cryptocurrency Daily Turnover Rate (@ Exchanges)<br />As-of {:%B %-d, %Y %H:%M:%S} UTC'.format(
        datetime.utcfromtimestamp(df[df['id'] == 'bitcoin'].iloc[0]['last_updated'])),
    xaxis=dict(
        title='24H Turnover Ratio',
        type='log',
        ticksuffix='%',
        dtick=0.5,
    ),
    yaxis=dict(
        title='Market Cap',
        type='log',
    ),
    hovermode = 'closest',
)
data = [
    go.Scatter(
        mode='markers',
        hoverinfo='text',
        x=(df['24h_volume_usd'] / df['market_cap_usd']) * 100,
        y=df['market_cap_usd'],
        text=df['name'] + ' (' + df['symbol'] + ')<br />24 Hour: ' + df['percent_change_24h'].astype('str') + '%<br />7 Day: ' + df['percent_change_7d'].astype('str') + '%',
        marker=dict(
            color=[colors[int(np.sign(x)) + 1] for x in df['percent_change_24h']],
            size=np.log(df['24h_volume_usd']),
        ),
    )]
fig = go.Figure(data=data, layout=layout)
iplot(fig)