I want my graphs to look like this:

But with the code below, I get this.

It is similar to the question here, but I cannot seem to make that solution (of adding style="display":"inline-block" to work).
Any ideas how to do this? ChatGPT/code-interpreter also gave this answer, and it seems "logical" to do this, but I am stumped...
My code:
from dash import Dash, dcc, html
import dash_bootstrap_components as dbc
import plotly.express as px
# Function to draw the figure
def drawFigure() -> html.Div:
"""
Draw a Plotly figure using the Iris dataset.
Returns:
html.Div: A div containing the Plotly figure.
"""
return html.Div([
dcc.Graph(
figure=px.bar(
df, x="sepal_width", y="sepal_length", color="species"
),
config={
'displayModeBar': False
}
)
], className='mt-3 mb-3')
# Data
df = px.data.iris()
# Build App
app = Dash(external_stylesheets=[dbc.themes.LITERA])
app.layout = dbc.Container([
dbc.Row([
dbc.Col([
drawFigure()
], width=3, style={"height": "100%"}), # Make this column 100% of the available height
dbc.Col([
dbc.Row([
dbc.Col([
drawFigure()
], width=6),
dbc.Col([
drawFigure()
], width=6),
], style={"height":"50%"}), # Each of these rows will be 50% of the available height
dbc.Row([
dbc.Col([
drawFigure()
], width=6),
dbc.Col([
drawFigure()
], width=6),
], style={"height":"50%"}), # Each of these rows will be 50% of the available height
]),
]),
], style={'background-color': 'black'})
# Run app and display result inline in the notebook
app.run_server(host='0.0.0.0', port=8050, debug=True, jupyter_height=1600)
I'm working with something as below:
So I think we need to add all columns in one big Row, then make 3 Columns in big Row, then make 2 Rows in the last 2 Columns.
You will get this one: