Creëer een dynamische dashboard met meerdere Seaborn visualisaties
description
Met deze prompt kan de gebruiker een krachtig en overzichtelijk dashboard maken met meerdere Seaborn grafieken die samen diepgaande inzichten bieden. Het lost de uitdaging op van het combineren van verschillende visualisaties in één overzicht met interactieve mogelijkheden, wat efficiënter is dan losse plots. Het is ideaal voor gebruikers die hun data overzichtelijk en interactief willen presenteren.
prompt
Help me een dynamisch dashboard te maken met meerdere Seaborn visualisaties voor mijn dataset. Beschrijving van mijn dataset: <beschrijf kort je dataset>. Welke soorten grafieken wil ik combineren: <noem de grafiektypes zoals histogram, scatterplo ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze gids om een dynamisch dashboard te maken met meerdere Seaborn-visualisaties voor jouw webshopgegevens, inclusief filters voor datum en productcategorie, in een zwart-wit thema met strakke lijnen.
Benodigdheden
- Python (bijvoorbeeld Anaconda)
- Bibliotheken: pandas, seaborn, matplotlib, ipywidgets, plotly (voor interactieve elementen)
Stap 1: Data voorbereiden
import pandas as pd
# Laad je dataset
data = pd.read_csv('jouw_dataset.csv')
# Zorg dat datum kolom als datetime is
data['datum'] = pd.to_datetime(data['datum'])
Stap 2: Bibliotheken importeren
import seaborn as sns
import matplotlib.pyplot as plt
from ipywidgets import interact, Dropdown, DatePicker
import datetime
# Stel stijl in
sns.set_theme(style='whitegrid', palette='gray') # zwart-wit thema met strakke lijnen
Stap 3: Functies voor visualisaties
# 3.1 Histogram voor Omzet
def plot_histogram(selected_category, start_date, end_date):
filtered = data[
(data['productcategorie'] == selected_category) &
(data['datum'] >= start_date) &
(data['datum'] <= end_date)
]
plt.figure(figsize=(6,4))
sns.histplot(filtered['omzet'], bins=20)
plt.title('Histogram van Omzet')
plt.xlabel('Omzet')
plt.ylabel('Frequentie')
plt.show()
# 3.2 Scatterplot van Omzet vs Aantal Klanten
def plot_scatter(selected_category, start_date, end_date):
filtered = data[
(data['productcategorie'] == selected_category) &
(data['datum'] >= start_date) &
(data['datum'] <= end_date)
]
plt.figure(figsize=(6,4))
sns.scatterplot(x='aantal_klanten', y='omzet', data=filtered)
plt.title('Omzet vs Aantal Klanten')
plt.xlabel('Aantal Klanten')
plt.ylabel('Omzet')
plt.show()
# 3.3 Boxplot voor Winst per Productcategorie
def plot_boxplot(selected_category, start_date, end_date):
filtered = data[
(data['productcategorie'] == selected_category) &
(data['datum'] >= start_date) &
(data['datum'] <= end_date)
]
plt.figure(figsize=(6,4))
sns.boxplot(x='productcategorie', y='winst', data=filtered)
plt.title('Boxplot Winst per Productcategorie')
plt.xlabel('Productcategorie')
plt.ylabel('Winst')
plt.show()
Stap 4: Interactieve widgets maken
# Assumptie: je hebt kolommen 'productcategorie', 'datum' en je kunt selecties maken
# Dropdown voor productcategorie
categorie_opties = data['productcategorie'].unique()
# Datum pickers
min_datum = data['datum'].min()
max_datum = data['datum'].max()
@interact
def dashboard(
selected_category=Dropdown(options=categorie_opties, description='Categorie:'),
start_date=DatePicker(value=min_datum, description='Startdatum:', min=min_datum, max=max_datum),
end_date=DatePicker(value=max_datum, description='Einddatum:', min=min_datum, max=max_datum)
):
# Zorg dat start_date en end_date in datetime formaat zijn
start_dt = pd.to_datetime(start_date)
end_dt = pd.to_datetime(end_date)
# Plotten
plot_histogram(selected_category, start_dt, end_dt)
plot_scatter(selected_category, start_dt, end_dt)
plot_boxplot(selected_category, start_dt, end_dt)
Opmerking:
- Als je geen Jupyter Notebook gebruikt, kunnen interactieve widgets vervangen worden door een andere GUI-tool of door parameters handmatig aan te passen.
- Pas de kolomnamen en datatypes aan indien nodig.
- Voor een professionelere en meer interactieve aanpak kun je overwegen Plotly Dash te gebruiken.
Met deze opzet heb je een overzichtelijk, zwart-wit dashboard met drie visualisaties die je dynamisch kunt aanpassen via filters voor datum en productcategorie.
provider: deepseek
model: deepseek-chat
Absoluut. Hier is een complete handleiding om een dynamisch, interactief dashboard in Python te bouwen met behulp van Seaborn, Plotly en Dash, precies volgens uw specificaties.
### Vereiste Bibliotheken
Eerst moet u deze bibliotheken installeren (via uw terminal/command prompt):
```bash
pip install pandas dash plotly seaborn
```
### De Complete Code voor het Dashboard
Sla de volgende code op in een bestand, bijvoorbeeld `dashboard.py`.
```python
# dashboard.py
import pandas as pd
import seaborn as sns
import plotly.express as px
from dash import Dash, dcc, html, Input, Output
import plotly.graph_objects as go
from datetime import datetime as dt
# 1. Stel het zwart-wit thema van Seaborn in
sns.set_theme(style="whitegrid", palette="gray")
# 2. Laad uw dataset (vervang 'uw_dataset.csv' met uw bestand)
df = pd.read_csv('uw_dataset.csv')
# Zorg ervoor dat de datumkolom het juiste type heeft
df['datum'] = pd.to_datetime(df['datum'])
# 3. Initialiseer de Dash app
app = Dash(__name__)
# 4. Definieer de layout van het dashboard
app.layout = html.Div([
html.H1("Webshop Prestatie Dashboard", style={'textAlign': 'center'}),
# Filter sectie
html.Div([
html.Label("Filter op Datumbereik:"),
dcc.DatePickerRange(
id='datum-filter',
start_date=df['datum'].min(),
end_date=df['datum'].max(),
display_format='YYYY-MM-DD'
),
html.Label("Filter op Productcategorie:"),
dcc.Dropdown(
id='categorie-filter',
options=[{'label': cat, 'value': cat} for cat in df['productcategorie'].unique()],
value=df['productcategorie'].unique(), # Toont standaard alle categorieën
multi=True
)
], style={'padding': 20, 'backgroundColor': '#f9f9f9', 'marginBottom': 20}),
# Grafiek sectie
html.Div([
# Eerste rij: Histogram en Boxplot
html.Div([
dcc.Graph(id='histogram'),
dcc.Graph(id='boxplot')
], style={'display': 'flex', 'flex-direction': 'row'}),
# Tweede rij: Scatterplot
html.Div([
dcc.Graph(id='scatterplot')
], style={'width': '100%'})
])
])
# 5. Definieer de callback voor interactiviteit
@app.callback(
[Output('histogram', 'figure'),
Output('scatterplot', 'figure'),
Output('boxplot', 'figure')],
[Input('datum-filter', 'start_date'),
Input('datum-filter', 'end_date'),
Input('categorie-filter', 'value')]
)
def update_graphs(start_date, end_date, selected_categories):
# Filter de dataset op basis van de gekozen filters
filtered_df = df[
(df['datum'] >= start_date) &
(df['datum'] <= end_date) &
(df['productcategorie'].isin(selected_categories))
]
# Maak een zwart-wit kleurenschema aan
color_palette = ['#000000', '#333333', '#666666', '#999999', '#cccccc']
# 1. Histogram van Omzet
hist_fig = px.histogram(
filtered_df,
x='omzet',
title='Distributie van Omzet',
color_discrete_sequence=['#000000']
)
hist_fig.update_layout(plot_bgcolor='white', paper_bgcolor='white')
hist_fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='#eeeeee')
hist_fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='#eeeeee')
# 2. Scatterplot Omzet vs. Kosten, gekleurd per categorie
scatter_fig = px.scatter(
filtered_df,
x='omzet',
y='kosten',
color='productcategorie',
title='Omzet vs. Kosten per Productcategorie',
color_discrete_sequence=color_palette
)
scatter_fig.update_layout(plot_bgcolor='white', paper_bgcolor='white')
scatter_fig.update_traces(marker=dict(size=8, line=dict(width=1, color='DarkSlateGrey')))
# 3. Boxplot van Winst per Productcategorie
box_fig = px.box(
filtered_df,
x='productcategorie',
y='winst',
title='Winstverdeling per Productcategorie',
color='productcategorie',
color_discrete_sequence=color_palette
)
box_fig.update_layout(plot_bgcolor='white', paper_bgcolor='white', showlegend=False)
box_fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='#eeeeee')
box_fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='#eeeeee')
return hist_fig, scatter_fig, box_fig
# 6. Start de server
if __name__ == '__main__':
app.run_server(debug=True)
```
### Hoe het werkt en aan te passen:
1. **Dataset Laden (Regel 14-16):**
* Vervang `'uw_dataset.csv'` door het pad naar uw eigen CSV-bestand.
* Zorg ervoor dat de kolomnamen overeenkomen (`datum`, `productcategorie`, `omzet`, `kosten`, `winst`). Als uw kolommen andere namen hebben, pas deze dan overal in de code aan.
2. **Starten van het Dashboard:**
* Voer het script uit vanuit de terminal: `python dashboard.py`
* Open uw webbrowser en ga naar `http://127.0.0.1:8050/`
3. **Interactieve Functies:**
* **Datumfilter:** Kies een start- en einddatum om de gegevens in te perken.
* **Categoriefilter:** Selecteer een of meerdere productcategorieën om te tonen. De grafieken updaten automatisch.
4. **Stijl aanpassen:**
* De code is al ingesteld op een zwart-wit thema met strakke lijnen (`style="whitegrid"` en `color_discrete_sequence`).
* U kunt kleuren aanpassen door de hex-codes in de `color_palette` lijst te wijzigen.
* Titelstijlen, marges en opmaak van de filters kunnen worden aangepast in de `style` dictionaries.
Dit dashboard geeft u een krachtige, interactieve omgeving om uw verkoopgegevens te analyseren volgens de gestelde eisen.