2D figure
Plotly figure that uses slider to navigate through Axial slices of a B1 mapped brain
By clicking the plus on the right side above the figure you can expand the cell to see the code
import scipy.io as sio
import plotly.graph_objs as go
from ipywidgets import interactive, HBox, widgets, interact
import numpy as np
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
from IPython.core.display import display, HTML
import os
init_notebook_mode(connected=True)
config={'showLink': False, 'displayModeBar': False}
# If you run on your local machine comment out this line
os.chdir("/home/jovyan/content/04/subsection/01")
# Load matrix callculated in the previous section
matrix = sio.loadmat(file_name = "newmap.mat", matlab_compatible = True)
newmap = matrix['vect']
# Rotate to get picutre
matrix = np.rot90(newmap)
# Get # of slices
slices_z = newmap.shape[0]
# Create list of Heatmaps, one for every slice
data = []
for i in range(slices_z):
z_current = np.rot90(matrix[i,:,:], 2)
data_c = go.Heatmap(z = z_current,
visible = False,
xtype = "scaled",
ytype = "scaled",
colorscale = "viridis",
colorbar = dict(title = dict(text = "FA [°]")))
data.append(data_c)
# Toggle frist slice to be visible
data[0]['visible'] = True
# Create steps and slider
steps = []
for i in range(slices_z):
step = dict(
method = 'restyle',
args = ['visible', [False]*slices_z],
label = str(i)
)
step['args'][1][i] = True # Toggle i'th trace to "visible"
steps.append(step)
sliders = [dict(
active = 0,
currentvalue = {'prefix':"Current slice is: <b>"},
pad = {"t": 50, "b": 10},
steps = steps
)]
# Setup the layout of the figure
layout = go.Layout(
width=458,
height=550,
margin=go.layout.Margin(
l=50,
r=50,
b=60,
t=15,
),
showlegend = False,
autosize = False,
sliders=sliders,
xaxis = dict(showgrid = False,
showticklabels= False),
yaxis = dict(showgrid = False,
showticklabels = False),
)
# Plot function saves as html or with ipplot
fig = dict(data=data, layout=layout)
plot(fig, filename = 'fig.html', config = config)
# THEBELAB
display(HTML('fig.html'))
# BINDER
# iplot(fig,config=config)