Ontwikkel Matplotlib Visualisaties met Geavanceerde Interactieve Zoom- en Panfuncties
description
Met deze prompt kun je Matplotlib grafieken maken die gebruikers in staat stellen om gegevens op een interactieve manier te verkennen door in- en uit te zoomen en te pannen. Dit verbetert de gebruikservaring en maakt het makkelijker om patronen en details in complexe datasets te ontdekken, wat met statische visualisaties niet mogelijk is. De prompt levert direct bruikbare Python code die gemakkelijk in bestaande projecten geïntegreerd kan worden.
prompt
Help me een Matplotlib visualisatie te maken voor mijn dataset: <beschrijving van je dataset>. Ik wil geavanceerde interactieve functies toevoegen zoals dynamisch in- en uitzoomen en pannen, zodat gebru ...
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=3644 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3644 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Hier is een complete Python-oplossing met interactieve functies en een donker thema:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, HourLocator
import matplotlib.dates as mdates
from datetime import datetime, timedelta
# Genereer voorbeelddata (vervang dit met je eigen dataset)
def generate_sample_data():
start_date = datetime(2024, 1, 1)
end_date = datetime(2024, 1, 31)
hours = int((end_date - start_date).total_seconds() / 3600)
dates = [start_date + timedelta(hours=i) for i in range(hours)]
temperatures = 10 + 8 * np.sin(np.linspace(0, 4*np.pi, hours)) + np.random.normal(0, 2, hours)
return pd.DataFrame({
'datetime': dates,
'temperature': temperatures
})
# Maak de dataset
df = generate_sample_data()
# Stel het donkere thema in
plt.style.use('dark_background')
fig, ax = plt.subplots(figsize=(14, 8))
# Plot de temperatuurdata
line, = ax.plot(df['datetime'], df['temperature'],
color='#FF6B6B', linewidth=2, marker='o', markersize=3,
markerfacecolor='#4ECDC4', markeredgewidth=0)
# Stel de grafiek in
ax.set_title('Temperatuurmetingen per uur - Januari 2024',
fontsize=16, fontweight='bold', pad=20, color='white')
ax.set_xlabel('Datum en tijd', fontsize=12, labelpad=15, color='lightgray')
ax.set_ylabel('Temperatuur (°C)', fontsize=12, labelpad=15, color='lightgray')
# Formatteer de x-as voor betere leesbaarheid
ax.xaxis.set_major_formatter(DateFormatter('%d-%m\n%H:%M'))
ax.xaxis.set_major_locator(mdates.DayLocator(interval=3))
ax.xaxis.set_minor_locator(mdates.HourLocator(interval=6))
# Verbeter de randen en kleuren
ax.grid(True, alpha=0.3, color='gray', linestyle='--')
ax.tick_params(colors='lightgray')
ax.set_facecolor('#2C3E50') # Donkerblauwe achtergrond
# Voeg interactieve functies toe
plt.subplots_adjust(bottom=0.15) # Ruimte voor navigatiebalk
# Activeer standaard interactieve functies
plt.rcParams['toolbar'] = 'toolmanager' # Moderne toolbar
# Extra interactieve features
def on_hover(event):
if event.inaxes == ax:
# Toon tooltip met exacte waarden
cont, ind = line.contains(event)
if cont:
index = ind['ind'][0]
ax.set_title(f'Temperatuur: {df["temperature"].iloc[index]:.1f}°C\n'
f'Tijd: {df["datetime"].iloc[index].strftime("%d-%m-%Y %H:%M")}',
fontsize=12, color='#FFD93D')
fig.canvas.draw_idle()
else:
ax.set_title('Temperatuurmetingen per uur - Januari 2024',
fontsize=16, fontweight='bold', color='white')
fig.canvas.draw_idle()
# Verbind events
fig.canvas.mpl_connect('motion_notify_event', on_hover)
# Custom toolbar buttons (optioneel - voor extra controle)
from matplotlib.widgets import Button
# Zoom reset knop
reset_ax = plt.axes([0.8, 0.02, 0.1, 0.04])
reset_button = Button(reset_ax, 'Reset Zoom', color='#34495E', hovercolor='#16A085')
reset_button.on_clicked(lambda x: ax.set_xlim(df['datetime'].min(), df['datetime'].max()))
# Stel de layout in
plt.tight_layout()
plt.show()
```
**Belangrijke functies die zijn toegevoegd:**
1. **Dynamisch in-/uitzoomen**: Standaard muiswiel functionaliteit
2. **Pannen**: Klik en sleep met linkermuisknop
3. **Hover effect**: Toont exacte waarden bij mouse-over
4. **Reset knop**: Keert terug naar volledig overzicht
5. **Donker thema**: Professioneel donker kleurenschema
6. **Responsieve toolbar**: Moderne navigatiebalk
**Aanvullende opties die je kunt toevoegen:**
```python
# Voor extra interactiviteit, voeg deze toe na plt.show():
print("""
Gebruiksaanwijzing:
- Muiswiel: In-/uitzoomen
- Linkermuisknop + slepen: Pannen
- Rechtermuisknop: Reset view
- Hover: Toon details
- Reset knop: Volledig overzicht
""")
```
**Installatievereisten:**
```bash
pip install matplotlib pandas numpy
```
Deze code biedt een complete interactieve ervaring met een professioneel donker thema en alle gevraagde functionaliteiten!