Ontwikkel een Seaborn Visualisatie met Geavanceerde Interactieve Widgets en Gebeurtenissen
description
Met deze prompt kun je interactieve visualisaties maken die gebruikers in staat stellen om data dynamisch te verkennen via widgets en interactieve acties. Dit verhoogt de betrokkenheid en maakt diepgaandere analyses mogelijk zonder statische grafieken. Het is een unieke toevoeging binnen Seaborn-toepassingen die verder gaat dan standaard visualisaties en rapportages.
prompt
Help me een Seaborn visualisatie te creëren die geavanceerde interactieve widgets en gebeurtenishandlers bevat om gebruikersinteractie te verbeteren. Beschrijving van mijn dataset: <beschrijf kort je dataset>. Welke soorten interactieve elementen wil ik toevoegen: <bijvoorbeeld dropdowns, sliders, knoppen>. Welke variabelen moeten de ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3690 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3690 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Hoi! Voor een interactieve Seaborn visualisatie met widgets raad ik aan om `ipywidgets` in combinatie met Jupyter Notebook te gebruiken. Hier is een complete oplossing:
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from ipywidgets import interact, Dropdown
import matplotlib.dates as mdates
# Stel pastelkleuren in
sns.set_palette("pastel")
sns.set_style("whitegrid")
# Voorbeeld dataset (vervang met je eigen data)
data = {
'productcategorie': ['Electronica', 'Electronica', 'Kleding', 'Kleding', 'Electronica', 'Kleding'],
'verkoopdatum': ['2023-01-15', '2023-04-20', '2023-02-10', '2023-03-25', '2023-01-30', '2023-04-05'],
'omzet': [15000, 18000, 8500, 9200, 16000, 7800],
'aantal': [120, 150, 200, 180, 140, 160]
}
df = pd.DataFrame(data)
df['verkoopdatum'] = pd.to_datetime(df['verkoopdatum'])
# Maak dropdown opties
categorieën = sorted(df['productcategorie'].unique())
def update_plot(gekozen_categorie):
plt.figure(figsize=(12, 6))
# Filter data op gekozen categorie
gefilterde_data = df[df['productcategorie'] == gekozen_categorie]
# Maak scatterplot
scatter = sns.scatterplot(
data=gefilterde_data,
x='verkoopdatum',
y='omzet',
size='aantal',
sizes=(50, 200),
alpha=0.7,
hue='aantal',
palette='pastel'
)
# Styling en annotaties
plt.title(f'Kwartaalcijfers - {gekozen_categorie}', fontsize=14, fontweight='bold')
plt.xlabel('Verkoopdatum')
plt.ylabel('Omzet (€)')
plt.xticks(rotation=45)
# Formatteer datum-as
scatter.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
scatter.xaxis.set_major_locator(mdates.MonthLocator())
# Voeg grid toe
plt.grid(True, alpha=0.3)
# Toon legenda
plt.legend(title='Aantal verkopen', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()
# Maak interactieve widget
interact(update_plot, gekozen_categorie=Dropdown(
options=categorieën,
value=categorieën[0],
description='Productcategorie:',
style={'description_width': 'initial'}
))
```
**Benodigde installaties:**
```bash
pip install seaborn matplotlib ipywidgets pandas
```
**Belangrijke features:**
- Dropdown menu voor productcategorie selectie
- Dynamische update van de scatterplot
- Pastelkleuren palette
- Grootte van markers gebaseerd op verkoopaantallen
- Datum formatting en rotatie
- Responsieve layout met legenda
**Opmerking:** Deze code werkt het beste in Jupyter Notebook. Voor andere IDE's kun je overwegen om `ipywidgets` te combineren met `matplotlib`'s interactive mode of alternatieven zoals Plotly te onderzoeken voor meer geavanceerde interactiviteit.
Wil je dat ik specifieke onderdelen aanpas of uitbreid?