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

try_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 ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

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.