In [ ]:
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
from bokeh.models import Range1d, ColumnDataSource, HoverTool, CrosshairTool
from bokeh.layouts import gridplot
from bokeh.palettes import Category20

import pandas as pd
import numpy as np

import requests
import io

output_notebook()

In [ ]:
import rasterio
from bokeh.models.mappers import LinearColorMapper
print('start')
ds = rasterio.open('/out/luh2/ssp1_rcp2.6_image-BIIAb-2100.tif')
data = ds.read(1, masked=True)[::-1]
print(data.shape)
p = figure(title='Test of image()', plot_width=ds.width>>1, plot_height=ds.height>>1, x_range=(0, 10), y_range=(0, 10))
cm = LinearColorMapper(palette='Viridis256', nan_color='black')
p.image(image=[data], x=0, y=0, dw=10, dh=10, color_mapper=cm)
show(p)
print('done')

In [ ]:
scenarios = ('historical', 'ssp1_rcp2.6_image', 'ssp3_rcp7.0_aim', 'ssp4_rcp3.4_gcam', 'ssp4_rcp6.0_gcam', 'ssp5_rcp8.5_remind-magpie')
plots = []
for scenario in scenarios:
    print(scenario)
    row = []
    for indicator in ('BIIAb', 'BIISR'):
        title = 'historical'
        base_url = "http://ipbes.s3.amazonaws.com/summary/%s-%s-%s- 900-2014.csv"
        if scenario != 'historical':
            ssp, rcp, model = scenario.upper().split('_')
            title = '%s -- %s / %s' % (indicator, ssp, rcp)
            base_url = "http://ipbes.s3.amazonaws.com/summary/%s-%s-%s-2015-2100.csv"
        p = figure(title=title)
        p.y_range = Range1d(0.45, 1)
        print(base_url % (scenario, indicator, 'subreg'))
        s = requests.get(base_url % (scenario, indicator, 'subreg')).content
        df = pd.read_csv(io.StringIO(s.decode('utf-8')))
        #df = pd.read_csv('ipbes-upload/%s-%s-subreg-2015-2100.csv' % (scenario, indicator))
        subset = df.loc[:, '2015':'2100'].T
        subset.columns = df['Name']
        subset.reset_index(inplace=True)
        subset = subset.rename(columns={'index': 'Year'})
        mypalette=Category20[len(subset.columns)]

        for idx, col in enumerate(subset.columns):
            if col in ('Year', 'Excluded'):
                continue
            src = ColumnDataSource(data={
                'year': subset.Year,
                'data': subset[col],
                'name': [col for n in range(len(subset))]
            })
            p.line('year', 'data', source=src, line_width=4, color=mypalette[idx])
            
        base_url = "http://ipbes.s3.amazonaws.com/summary/%s-%s-%s-2015-2100.csv"
        s = requests.get(base_url % (scenario, indicator, 'global')).content
        df = pd.read_csv(io.StringIO(s.decode('utf-8')))
        glob = df.loc[:, '2015':'2100'].T.reset_index()
        src = ColumnDataSource(data={
            'year': glob['index'],
            'data': glob[0],
            'name': ['Global' for n in range(len(glob))]
        })
        p.line('year', 'data', source=src, line_width=8, color='black')
        p.add_tools(HoverTool(tooltips=[('Year', '@year'), (indicator, '@data'), ('Region', '@name')]))
        row.append(p)
    plots.append(row)
grid = gridplot(plots, sizing_mode='scale_width')
show(grid)