slogan3

Maak Matplotlib Visualisaties met Aanpasbare Interactieve Legenda's

description

Maakt het mogelijk voor gebruikers om complexere visualisaties interactief te verkennen door plot-elementen aan of uit te zetten, wat de duidelijkheid en inzichten verbetert. Deze prompt helpt bij het creëren van meer aantrekkelijke en gebruiksvriendelijke grafieken in vergelijking met statische legenda's, waardoor dynamische focus op datadelen mogelijk is.

prompt

Help me een Matplotlib-visualisatie te maken voor mijn dataset: <beschrijf je dataset>. Ik wil een interactieve legenda toevoegen waarmee gebruikers de zichtbaarheid van verschillende plot-elementen zoals lijnen, b ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van Python-code die een interactieve legenda toevoegt aan je tijdreeksgegevens van twee sensormetingen. De code gebruikt Matplotlib en maakt gebruik van de `CheckButtons` widget voor de interactie. Je kunt de positie van de legenda, de lettergrootte en kleuren aanpassen via de parameters. ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import CheckButtons # Voorbeeldgegevens genereren np.random.seed(0) tijden = np.linspace(0, 10, 100) sensor1 = np.sin(tijden) + 0.1 * np.random.randn(100) sensor2 = np.cos(tijden) + 0.1 * np.random.randn(100) # Plot maken fig, ax = plt.subplots() line1, = ax.plot(tijden, sensor1, label='Sensor 1', color='blue') line2, = ax.plot(tijden, sensor2, label='Sensor 2', color='orange') # Aanpassing van layout om ruimte te maken voor CheckButtons plt.subplots_adjust(left=0.3) # Positioneren van de CheckButtons rax = plt.axes([0.05, 0.4, 0.2, 0.15]) # [links, onder, breedte, hoogte] labels = ['Sensor 1', 'Sensor 2'] visibility = [line1.get_visible(), line2.get_visible()] check = CheckButtons(rax, labels, visibility) # Functie voor interactie def func(label): if label == 'Sensor 1': line1.set_visible(not line1.get_visible()) elif label == 'Sensor 2': line2.set_visible(not line2.get_visible()) plt.draw() check.on_clicked(func) # Aanpassen legenda leg = ax.legend(loc='upper right', fontsize=10) # Pas fontsize en locatie aan plt.show() ``` **Aanpassingen mogelijk:** - **Legenda positie:** wijzig `loc='upper right'` naar andere opties zoals `'upper left'`, `'lower right'`, `'center'`, etc. - **Lettergrootte:** wijzig `fontsize=10` naar gewenste grootte. - **Kleuren:** pas de `color` parameter bij `ax.plot()` aan. Met deze opzet kunnen gebruikers via de checkbox de zichtbaarheid van de sensormetingen aan- en uitzetten, waardoor de visualisatie interactiever wordt.
provider: deepseek
model: deepseek-chat
Hier is een complete Python-code voor een interactieve Matplotlib-plot met tijdreeksgegevens en een aanpasbare legenda: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import CheckButtons # Genereer voorbeeld tijdreeksgegevens (100 tijdstippen) tijd = np.linspace(0, 10, 100) sensor1 = np.sin(tijd) + np.random.normal(0, 0.1, 100) # Sensor 1 met ruis sensor2 = np.cos(tijd) + np.random.normal(0, 0.1, 100) # Sensor 2 met ruis # Maak de figuur en subplot fig, ax = plt.subplots(figsize=(12, 6)) plt.subplots_adjust(left=0.1, right=0.75) # Ruimte maken voor legenda # Plot de sensorgegevens lijn1, = ax.plot(tijd, sensor1, 'b-', linewidth=2, label='Sensor 1') lijn2, = ax.plot(tijd, sensor2, 'r-', linewidth=2, label='Sensor 2') scatter1 = ax.scatter(tijd[::5], sensor1[::5], color='blue', alpha=0.6, label='Sensor 1 punten') scatter2 = ax.scatter(tijd[::5], sensor2[::5], color='red', alpha=0.6, label='Sensor 2 punten') # Configureer de plot ax.set_xlabel('Tijd', fontsize=12) ax.set_ylabel('Sensorwaarden', fontsize=12) ax.set_title('Tijdreeks van Sensormetingen', fontsize=14) ax.grid(True, alpha=0.3) # Maak een legenda met aanpasbare eigenschappen legenda = ax.legend( loc='upper left', # Plaatsing: 'upper left', 'upper right', 'lower left', 'lower right' bbox_to_anchor=(1.05, 1), # Positie buiten de plot fontsize=11, # Lettergrootte frameon=True, # Frame rond legenda fancybox=True, # Afgeronde hoeken shadow=True # Schaduw effect ) # Maak checkbuttons voor interactieve legenda rax = plt.axes([0.82, 0.4, 0.15, 0.15]) # Positie van checkbuttons labels = [lijn1.get_label(), lijn2.get_label(), scatter1.get_label(), scatter2.get_label()] visibility = [lijn1.get_visible(), lijn2.get_visible(), scatter1.get_visible(), scatter2.get_visible()] check = CheckButtons(rax, labels, visibility) # Functie om zichtbaarheid aan te passen def update_visibility(label): if label == 'Sensor 1': lijn1.set_visible(not lijn1.get_visible()) elif label == 'Sensor 2': lijn2.set_visible(not lijn2.get_visible()) elif label == 'Sensor 1 punten': scatter1.set_visible(not scatter1.get_visible()) elif label == 'Sensor 2 punten': scatter2.set_visible(not scatter2.get_visible()) plt.draw() # Koppel de update functie aan de checkbuttons check.on_clicked(update_visibility) # Toon de plot plt.tight_layout() plt.show() ``` **Aanpasbare opties:** 1. **Legenda plaatsing**: Pas `loc` en `bbox_to_anchor` aan: - Binnen plot: `loc='upper right'` (zonder bbox_to_anchor) - Buiten plot: `bbox_to_anchor=(x, y)` waar x,y de positie bepaalt 2. **Lettergrootte**: Verander `fontsize` in de legend() functie 3. **Kleuren**: Pas de kleuren aan in de plot commando's: - Lijnen: `'b-'` (blauw), `'r-'` (rood) - Scatterpunten: `color='blue'`, `color='red'` 4. **Stijl opties**: - `frameon`: Frame wel/niet tonen - `fancybox`: Afgeronde hoeken - `shadow`: Schaduw effect **Interactieve functies:** - Klik op de checkboxes om lijnen/punten aan/uit te zetten - De legenda blijft altijd zichtbaar voor referentie Je kunt de kleuren, stijlen en posities eenvoudig aanpassen naar je voorkeuren!