slogan3

Maak Matplotlib Visualisaties met Dynamische Gegevensfiltering

description

Maakt het mogelijk om gericht en interactief specifieke delen van je data te bekijken, wat inzicht en analyse-efficiëntie verbetert. In tegenstelling tot statische grafieken helpt deze prompt bij het creëren van visualisaties die reageren op gebruikersfilters, waardoor het verkennen van data flexibeler en gebruiksvriendelijker wordt.

prompt

Help me een Matplotlib visualisatie te maken met dynamische gegevensfiltering. Mijn dataset beschrijving: <beschrijf je dataset>. Ik wil data kunnen filteren op criteria zoals <filtercriteria> en dat de grafiek hierop wordt aange ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van Python-code die een interactieve Matplotlib-visualisatie maakt met dynamische filters voor regio, productcategorie en datumbereik. We gebruiken `ipywidgets` voor de filterbedieningselementen en `matplotlib` voor de grafiek. De legenda wordt bovenaan geplaatst en de kleuren worden blauw en groen. ```python import matplotlib.pyplot as plt import pandas as pd import numpy as np import ipywidgets as widgets from IPython.display import display # Voorbeeld dataset np.random.seed(0) dates = pd.date_range('2023-01-01', '2023-12-31', freq='M') regio's = ['Noord', 'Zuid', 'Oost', 'West'] categorieën = ['Elektronica', 'Kleding', 'Speelgoed'] data = { 'Datum': np.tile(dates, len(regio's) * len(categorieën)), 'Regio': np.repeat(regio's, len(dates) * len(categorieën)), 'Categorie': np.tile(np.repeat(categorieën, len(dates)), len(regio's)), 'Verkoop': np.random.randint(100, 500, size=len(dates)*len(regio's)*len(categorieën)) } df = pd.DataFrame(data) # Functie om grafiek te plotten op basis van filters def plot_data(regio_filter, categorie_filter, start_date, end_date): plt.clf() # Filter data filtered_df = df[ (df['Regio'].isin(regio_filter)) & (df['Categorie'].isin(categorie_filter)) & (df['Datum'] >= start_date) & (df['Datum'] <= end_date) ] # Groeperen op datum en categorie voor plot grouped = filtered_df.groupby(['Datum', 'Categorie'])['Verkoop'].sum().reset_index() # Plot elke categorie met een eigen kleur fig, ax = plt.subplots(figsize=(10, 6)) kleuren = {'Elektronica': 'blue', 'Kleding': 'green', 'Speelgoed': 'orange'} for cat in categorieën: data_cat = grouped[grouped['Categorie'] == cat] ax.plot(data_cat['Datum'], data_cat['Verkoop'], label=cat, color=kleuren.get(cat, 'gray')) ax.set_title('Maandelijkse Verkoop') ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), ncol=3) ax.set_xlabel('Datum') ax.set_ylabel('Verkoop') plt.tight_layout() plt.show() # Widgets voor filters regio_select = widgets.SelectMultiple( options=regio's, value=regio's, description='Regio\'s', style={'description_width': 'initial'} ) categorie_select = widgets.SelectMultiple( options=categorieën, value=categorieën, description='Categorieën', style={'description_width': 'initial'} ) start_date_picker = widgets.DatePicker( description='Startdatum', value=df['Datum'].min() ) eind_date_picker = widgets.DatePicker( description='Einddatum', value=df['Datum'].max() ) # Functie om te reageren op widget-veranderingen def update_plot(*args): plot_data( list(regio_select.value), list(categorie_select.value), start_date_picker.value, eind_date_picker.value ) # Link widgets aan update functie regio_select.observe(update_plot, 'value') categorie_select.observe(update_plot, 'value') start_date_picker.observe(update_plot, 'value') eind_date_picker.observe(update_plot, 'value') # Tonen van widgets en initiale plot filter_box = widgets.VBox([regio_select, categorie_select, start_date_picker, eind_date_picker]) display(filter_box) # Initiale plot plot_data(regio's, categorieën, df['Datum'].min(), df['Datum'].max()) ``` **Wat doet deze code?** - Maakt een voorbeeld dataset met maandelijkse verkoopgegevens. - Biedt keuzelijsten voor regio's en productcategorieën, en datumbereik selectors. - Bij elke verandering in de filters wordt de grafiek automatisch bijgewerkt. - De grafiek toont de verkoop per categorie, met kleuren blauw en groen zoals gevraagd. - De legenda staat bovenaan de grafiek. **Voor gebruik:** - Deze code werkt in een Jupyter Notebook. Voor andere omgevingen kan het nodig zijn de widgets anders te integreren. - Pas de dataset aan naar je eigen gegevens voor een realistische visualisatie.
provider: deepseek
model: deepseek-chat
Hier is een Python-code met Matplotlib en interactieve widgets voor dynamische filtering van je verkoopgegevens: ```python import pandas as pd import matplotlib.pyplot as plt from matplotlib.widgets import CheckButtons, TextBox import numpy as np # Voorbeeld dataset (vervang met je eigen data) data = { 'Maand': ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'] * 3, 'Regio': ['Noord']*12 + ['Zuid']*12 + ['Oost']*12, 'Categorie': ['Elektronica']*6 + ['Kleding']*6 + ['Elektronica']*6 + ['Kleding']*6 + ['Elektronica']*6 + ['Kleding']*6, 'Verkoop': np.random.randint(100, 1000, 36) } df = pd.DataFrame(data) # Stijl instellingen plt.style.use('default') kleuren = ['#1f77b4', '#2ca02c'] # Blauw en groen # Figuur en subplots aanmaken fig, ax = plt.subplots(figsize=(12, 8)) plt.subplots_adjust(left=0.1, right=0.75, top=0.9, bottom=0.2) # Filter elementen ax_regio = plt.axes([0.1, 0.05, 0.15, 0.1]) ax_categorie = plt.axes([0.3, 0.05, 0.15, 0.1]) ax_maand = plt.axes([0.5, 0.05, 0.15, 0.1]) # Dropdowns/input velden regio_filter = TextBox(ax_regio, 'Regio:', initial='Alle') categorie_filter = TextBox(ax_categorie, 'Categorie:', initial='Alle') maand_filter = TextBox(ax_maand, 'Maand:', initial='Alle') def update_plot(val): """Update de grafiek gebaseerd op filter criteria""" ax.clear() # Filter data filtered_df = df.copy() if regio_filter.text != 'Alle': filtered_df = filtered_df[filtered_df['Regio'] == regio_filter.text] if categorie_filter.text != 'Alle': filtered_df = filtered_df[filtered_df['Categorie'] == categorie_filter.text] if maand_filter.text != 'Alle': filtered_df = filtered_df[filtered_df['Maand'] == maand_filter.text] # Groepeer en plot data if not filtered_df.empty: grouped = filtered_df.groupby(['Regio', 'Categorie', 'Maand'])['Verkoop'].sum().unstack().T for i, (categorie, values) in enumerate(grouped.items()): ax.plot(grouped.index, values, color=kleuren[i % len(kleuren)], marker='o', linewidth=2, label=f'{categorie[0]} - {categorie[1]}') # Stijl en opmaak ax.set_title('Maandelijkse Verkoopcijfers', fontsize=14, fontweight='bold') ax.set_xlabel('Maand', fontsize=12) ax.set_ylabel('Verkoopbedrag', fontsize=12) ax.grid(True, alpha=0.3) ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), ncol=3) # Rotatie van x-labels voor betere leesbaarheid plt.setp(ax.get_xticklabels(), rotation=45) plt.draw() # Event handlers regio_filter.on_submit(update_plot) categorie_filter.on_submit(update_plot) maand_filter.on_submit(update_plot) # Initial plot update_plot(None) plt.show() ``` **Gebruiksaanwijzing:** 1. Voer filterwaarden in de tekstvelden (bijv. "Noord" voor Regio, "Elektronica" voor Categorie) 2. Gebruik "Alle" om alle waarden te tonen 3. De grafiek update automatisch bij het invoeren van filters **Aanpassingsmogelijkheden:** - Vervang de voorbeelddata met je eigen DataFrame - Pas kleuren aan in de `kleuren` lijst - Wijig de positie en grootte van filterelementen door de coördinaten in `plt.axes()` aan te passen - Voeg extra filters toe door vergelijkbare TextBox widgets te creëren **Benodigde packages:** ```bash pip install pandas matplotlib numpy ``` De code gebruikt blauwe en groene kleuren zoals gevraagd en plaatst de legenda bovenaan met meerdere kolommen voor betere leesbaarheid.