plotting/plot.py

44 lines
1.3 KiB
Python

from chart import Chart
from plotly.graph_objects import Figure
from plotly.subplots import make_subplots
from typing import List
def figure_with_subplots(subplots: List[List[Chart]]) -> Figure:
num_rows = len(subplots)
num_columns = len(subplots[0])
figure = make_subplots(rows = num_rows, cols = num_columns)
for i, row in enumerate(subplots, start = 1):
for j, chart in enumerate(row, start = 1):
for trace in chart.traces():
figure.add_trace(trace, row = i, col = j)
figure.update_xaxes(
showgrid = False,
showticklabels = True,
rangebreaks = chart.range_breaks(),
rangeslider = dict(visible = False),
row = i, col = j
)
figure.update_yaxes(
showgrid = False,
side = 'right',
row = i, col = j
)
# TODO: Make this configurable.
figure.update_layout(
paper_bgcolor = '#0f0f0f',
plot_bgcolor = '#0f0f0f',
font_color = '#7a7c7d',
showlegend = False,
margin = dict(
pad = 15
)
)
return figure
def plot(chart: Chart) -> None:
figure_with_subplots([[chart]]).show(config = {'displayModeBar': False})