3D Filled Line Plots in Python/v3
How to make 3D Filled Line Plots in Python
Note: this page is part of the documentation for version 3 of Plotly.py, which is not the most recent version.
See our Version 4 Migration Guide for information about how to upgrade.
See our Version 4 Migration Guide for information about how to upgrade.
New to Plotly?¶
Plotly's Python library is free and open source! Get started by downloading the client and reading the primer.
You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!
Basic Filled Line Plot¶
In [3]:
import plotly.plotly as py
import pandas as pd
# The datasets' url. Thanks Jennifer Bryan!
url_csv = 'http://www.stat.ubc.ca/~jenny/notOcto/STAT545A/examples/gapminder/data/gapminderDataFiveYear.txt'
df = pd.read_csv(url_csv, sep='\t')
df.head()
countries = ['China', 'India', 'United States', 'Bangladesh', 'South Africa']
fill_colors = ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854']
gf = df.groupby('country')
data = []
for country, fill_color in zip(countries[::-1], fill_colors):
group = gf.get_group(country)
years = group['year'].tolist()
length = len(years)
country_coords = [country] * length
pop = group['pop'].tolist()
zeros = [0] * length
data.append(dict(
type='scatter3d',
mode='lines',
x=years + years[::-1] + [years[0]], # year loop: in incr. order then in decr. order then years[0]
y=country_coords * 2 + [country_coords[0]],
z=pop + zeros + [pop[0]],
name='',
surfaceaxis=1, # add a surface axis ('1' refers to axes[1] i.e. the y-axis)
surfacecolor=fill_color,
line=dict(
color='black',
width=4
),
))
layout = dict(
title='Population from 1957 to 2007 [Gapminder]',
showlegend=False,
scene=dict(
xaxis=dict(title=''),
yaxis=dict(title=''),
zaxis=dict(title=''),
camera=dict(
eye=dict(x=-1.7, y=-1.7, z=0.5)
)
)
)
fig = dict(data=data, layout=layout)
# IPython notebook
# py.iplot(fig, filename='filled-3d-lines')
py.iplot(fig, filename='filled-3d-lines')
Out[3]:
Reference¶
See https://plotly.com/python/reference/ for more information!