slogan3

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

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.