2
votes

Plotly has a page for Surface Plots (https://plot.ly/python/3d-surface-plots/) with two nice examples, the first uses Figure and Layout to plot. The second just using iplot() with no Layout modification. But the second example demos how to plot multiple surfaces simultaneously. I need both: (i.e. I need to call fig = go.Figure(data=data, layout=layout), as in the first instance (as I need to provide layout settings), however with the data object containing multiple surfaces.

It seems this doesn't work as expected. Any ideas?

1

1 Answers

0
votes

To define the layout and plot multiple surfaces you can run something like this:

import plotly.plotly as py
from plotly.graph_objs import Surface

z1 = [
    [8.83,8.89,8.81,8.87,8.9,8.87],
    [8.89,8.94,8.85,8.94,8.96,8.92],
    [8.84,8.9,8.82,8.92,8.93,8.91],
    [8.79,8.85,8.79,8.9,8.94,8.92],
    [8.79,8.88,8.81,8.9,8.95,8.92],
    [8.8,8.82,8.78,8.91,8.94,8.92],
    [8.75,8.78,8.77,8.91,8.95,8.92],
    [8.8,8.8,8.77,8.91,8.95,8.94],
    [8.74,8.81,8.76,8.93,8.98,8.99],
    [8.89,8.99,8.92,9.1,9.13,9.11],
    [8.97,8.97,8.91,9.09,9.11,9.11],
    [9.04,9.08,9.05,9.25,9.28,9.27],
    [9,9.01,9,9.2,9.23,9.2],
    [8.99,8.99,8.98,9.18,9.2,9.19],
    [8.93,8.97,8.97,9.18,9.2,9.18]
]

z2 = [[zij+1 for zij in zi] for zi in z1]
z3 = [[zij-1 for zij in zi] for zi in z1]

data = [
    dict(z=z1, type='surface'),
    dict(z=z2, showscale=False, opacity=0.9, type='surface'),
    dict(z=z3, showscale=False, opacity=0.9, type='surface')]

# Add all layout info here
layout = dict(title = 'Add Layout')

fig = dict(data=data, layout=layout)

py.iplot(fig, filename='multiple-surfaces-add-layout')