jupyter |
jupytext |
kernelspec |
language_info |
plotly |
notebook_metadata_filter |
text_representation |
all |
extension |
format_name |
format_version |
jupytext_version |
.md |
markdown |
1.1 |
1.1.6 |
|
|
display_name |
language |
name |
Python 3 |
python |
python3 |
|
codemirror_mode |
file_extension |
mimetype |
name |
nbconvert_exporter |
pygments_lexer |
version |
|
.py |
text/x-python |
python |
python |
ipython3 |
3.7.3 |
|
description |
display_as |
language |
layout |
name |
order |
page_type |
permalink |
thumbnail |
How to make mixed subplots in Python with Plotly. |
multiple_axes |
python |
base |
Mixed Subplots |
1 |
example_index |
python/mixed-subplots/ |
thumbnail/mixed_subplot.JPG |
|
|
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd
# read in volcano database data
df = pd.read_csv(
"https://raw-hub.myxuebi.top/plotly/datasets/master/volcano_db.csv",
encoding="iso-8859-1",
)
# frequency of Country
freq = df
freq = freq.Country.value_counts().reset_index().rename(columns={"index": "x"})
# read in 3d volcano surface data
df_v = pd.read_csv("https://raw-hub.myxuebi.top/plotly/datasets/master/volcano.csv")
# Initialize figure with subplots
fig = make_subplots(
rows=2, cols=2,
column_widths=[0.6, 0.4],
row_heights=[0.4, 0.6],
specs=[[{"type": "scattergeo", "rowspan": 2}, {"type": "bar"}],
[ None , {"type": "surface"}]])
# Add scattergeo globe map of volcano locations
fig.add_trace(
go.Scattergeo(lat=df["Latitude"],
lon=df["Longitude"],
mode="markers",
hoverinfo="text",
showlegend=False,
marker=dict(color="crimson", size=4, opacity=0.8)),
row=1, col=1
)
# Add locations bar chart
fig.add_trace(
go.Bar(x=freq["x"][0:10],y=freq["Country"][0:10], marker=dict(color="crimson"), showlegend=False),
row=1, col=2
)
# Add 3d surface of volcano
fig.add_trace(
go.Surface(z=df_v.values.tolist(), showscale=False),
row=2, col=2
)
# Update geo subplot properties
fig.update_geos(
projection_type="orthographic",
landcolor="white",
oceancolor="MidnightBlue",
showocean=True,
lakecolor="LightBlue"
)
# Rotate x-axis labels
fig.update_xaxes(tickangle=45)
# Set theme, margin, and annotation in layout
fig.update_layout(
template="plotly_dark",
margin=dict(r=10, t=25, b=40, l=60),
annotations=[
dict(
text="Source: NOAA",
showarrow=False,
xref="paper",
yref="paper",
x=0,
y=0)
]
)
fig.show()
See https://plotly.com/python/reference/ for more information and chart attribute options!