slogan3

Ontwikkel Een Seaborn Visualisatie met Geavanceerde Data Annotaties en Contextuele Tooltip Informatie

description

Met deze prompt kan de gebruiker Seaborn visualisaties maken die niet alleen data tonen, maar ook belangrijke inzichten verduidelijken via annotaties en interactieve tooltips. Dit helpt bij diepere interpretatie en maakt het makkelijker om complexe data te begrijpen. Het onderscheidt zich van andere prompts door de focus op contextuele informatie en gebruikersinteractie, wat de waarde van visualisaties aanzienlijk verhoogt.

prompt

Help me een Seaborn visualisatie te maken die geavanceerde data annotaties en contextuele tooltips bevat om diepere inzichten te geven. Beschrijving van mijn dataset: <beschrijf kort je dataset>. Kies het type visualisatie: <selecteer het gewenste diagramtype, zoals scatterplot, barplot, heatmap>. Welke variabelen wil ik visualiseren: <noem de k ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3694 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3694 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Hier is een volledige code voor een geavanceerde Seaborn scatterplot met de gewenste specificaties: ```python import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np from sklearn.cluster import KMeans import matplotlib.patches as mpatches # Stel donker thema in plt.style.use('dark_background') sns.set_style("darkgrid") # Voorbeeld dataset (vervang met jouw eigen data) data = { 'maand': ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'] * 3, 'afdeling': ['Electronica']*12 + ['Kleding']*12 + ['Huishouden']*12, 'omzet': np.random.randint(50000, 200000, 36), 'aantal_klanten': np.random.randint(1000, 5000, 36), 'kosten': np.random.randint(30000, 120000, 36) } df = pd.DataFrame(data) # Voeg clusteranalyse toe voor hoge verkoopcijfers kmeans = KMeans(n_clusters=3, random_state=42) df['cluster'] = kmeans.fit_predict(df[['omzet', 'aantal_klanten']]) # Identificeer cluster met hoogste omzet hoogste_cluster = df.groupby('cluster')['omzet'].mean().idxmax() # Maak de scatterplot fig, ax = plt.subplots(figsize=(14, 8)) # Plot met verschillende kleuren per cluster scatter = sns.scatterplot( data=df, x='aantal_klanten', y='omzet', hue='cluster', size='kosten', sizes=(50, 300), alpha=0.7, palette='viridis', ax=ax ) # Markeer cluster met hoge verkoopcijfers hoog_omzet_data = df[df['cluster'] == hoogste_cluster] ax.scatter( hoog_omzet_data['aantal_klanten'], hoog_omzet_data['omzet'], s=100, edgecolor='red', linewidth=2, facecolor='none', label='Hoge omzet cluster' ) # Annotaties toevoegen for idx, row in df.iterrows(): if row['cluster'] == hoogste_cluster: ax.annotate( f"{row['maand']}-{row['afdeling']}", (row['aantal_klanten'], row['omzet']), xytext=(5, 5), textcoords='offset points', fontsize=8, color='red', weight='bold' ) # Legend en labels ax.set_xlabel('Aantal Klanten', fontsize=12, fontweight='bold') ax.set_ylabel('Omzet (€)', fontsize=12, fontweight='bold') ax.set_title('Maandelijkse Omzet vs Aantal Klanten per Afdeling', fontsize=14, fontweight='bold') # Verwijder gridlijnen ax.grid(False) # Custom legend handles, labels = ax.get_legend_handles_labels() new_handles = [handles[0], handles[1], handles[2], mpatches.Circle((0,0), radius=1, fill=False, edgecolor='red', linewidth=2)] new_labels = ['Cluster 0', 'Cluster 1', 'Cluster 2', 'Hoge Omzet Cluster'] ax.legend(new_handles, new_labels, title='Legenda') # Interactive tooltips (voor Jupyter Notebook) from mpld3 import plugins tooltip_data = [] for idx, row in df.iterrows(): tooltip = f""" <div style="background: #2b2b2b; padding: 10px; border-radius: 5px;"> <b>Afdeling:</b> {row['afdeling']}<br> <b>Maand:</b> {row['maand']}<br> <b>Omzet:</b> €{row['omzet']:,.0f}<br> <b>Klanten:</b> {row['aantal_klanten']}<br> <b>Kosten:</b> €{row['kosten']:,.0f}<br> <b>Winst:</b> €{row['omzet']-row['kosten']:,.0f} </div> """ tooltip_data.append(tooltip) plugins.connect(fig, plugins.PointHTMLTooltip(scatter, tooltip_data)) plt.tight_layout() plt.show() # Voor niet-interactieve omgevingen, gebruik deze alternatieve tooltip approach: print("\nVoor interactieve tooltips in Jupyter Notebook, installeer: pip install mpld3") ``` **Benodigde installaties:** ```bash pip install seaborn matplotlib pandas scikit-learn mpld3 ``` **Belangrijke features:** 1. **Donker thema** met aangepaste styling 2. **Clusteranalyse** markeert automatisch groep met hoogste omzet 3. **Interactieve tooltips** met volledige maandelijkse data 4. **Size encoding** voor kosten visualisatie 5. **Speciale annotaties** voor hoge-omzet maanden 6. **Gridlijnen uitgeschakeld** zoals gevraagd **Extra optie voor productie-omgeving:** Voor webapplicaties overweeg Plotly voor betere interactieve tooltips: ```python import plotly.express as px fig = px.scatter(df, x='aantal_klanten', y='omzet', color='cluster', size='kosten', hover_data=['maand', 'afdeling', 'kosten']) fig.show() ```