slogan3

Ontwikkel Matplotlib Dashboards voor Gegevensmonitoring in Realtime

description

Met deze prompt kan de gebruiker een geavanceerd Matplotlib-dashboard bouwen dat automatisch realtime data verwerkt en visualiseert. Dit lost het probleem op van statische plots en maakt continue monitoring van data mogelijk. Het is beter dan alternatieven omdat het meerdere grafiektypen combineert met automatische updates en gebruiksvriendelijke aanpassingsmogelijkheden.

prompt

Help me een Matplotlib-dashboard te maken voor realtime gegevensmonitoring. Mijn gegevensbron is <beschrijf je gegevensbron>, en ik wil meerdere visualisaties zoals lijngrafieken, balkgrafieken en spreidingsdiagrammen die automatisch wo ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld Python-code voor een realtime monitoring dashboard met Matplotlib, dat je direct kunt gebruiken. Het script simuleert realtime gegevens (temperatuur en luchtvochtigheid) en visualiseert deze met lijngrafieken, balkgrafieken en spreidingsdiagrammen die automatisch worden bijgewerkt elke 5 seconden. Je kunt de update-interval, kleuren en labels aanpassen naar wens. ```python import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np import random # Instellingen update_interval = 5000 # in milliseconden (5 seconden) kleur_temperatuur = 'blue' kleur_luchtvochtigheid = 'green' label_temperatuur = 'Temperatuur (°C)' label_luchtvochtigheid = 'Luchtvochtigheid (%)' # Initialiseer gegevens max_data_points = 20 tijden = list(range(-max_data_points+1, 1)) temperatuur_data = [20 + random.uniform(-1, 1) for _ in range(max_data_points)] luchtvochtigheid_data = [50 + random.uniform(-2, 2) for _ in range(max_data_points)] balk_data = [random.randint(0, 10) for _ in range(5)] x_balk = ['Sensor 1', 'Sensor 2', 'Sensor 3', 'Sensor 4', 'Sensor 5'] x_spreiding = np.random.rand(50) y_spreiding = np.random.rand(50) # Creëer figuur en subplots fig, axs = plt.subplots(2, 2, figsize=(12, 8)) ax_lijn_temperatuur = axs[0, 0] ax_lijn_luchtvochtigheid = axs[0, 1] ax_balk = axs[1, 0] ax_spreiding = axs[1, 1] # Lijngrafiek voor temperatuur lijn_temperatuur, = ax_lijn_temperatuur.plot(tijden, temperatuur_data, color=kleur_temperatuur) ax_lijn_temperatuur.set_title('Temperatuur over Tijd') ax_lijn_temperatuur.set_xlabel('Tijd (seconden)') ax_lijn_temperatuur.set_ylabel(label_temperatuur) ax_lijn_temperatuur.set_ylim(15, 25) # Lijngrafiek voor luchtvochtigheid lijn_luchtvochtigheid, = ax_lijn_luchtvochtigheid.plot(tijden, luchtvochtigheid_data, color=kleur_luchtvochtigheid) ax_lijn_luchtvochtigheid.set_title('Luchtvochtigheid over Tijd') ax_lijn_luchtvochtigheid.set_xlabel('Tijd (seconden)') ax_lijn_luchtvochtigheid.set_ylabel(label_luchtvochtigheid) ax_lijn_luchtvochtigheid.set_ylim(45, 55) # Balkdiagram voor sensordata balk = ax_balk.bar(x_balk, balk_data, color='orange') ax_balk.set_title('Sensorwaarden') ax_balk.set_ylim(0, 15) # Spreidingsdiagram scat = ax_spreiding.scatter(x_spreiding, y_spreiding, c='purple') ax_spreiding.set_title('Spreidingsdiagram') ax_spreiding.set_xlabel('X') ax_spreiding.set_ylabel('Y') ax_spreiding.set_xlim(0, 1) ax_spreiding.set_ylim(0, 1) # Updatefunctie voor animatie def update(frame): # Simuleer nieuwe gegevens nieuwe_temp = temperatuur_data[-1] + random.uniform(-0.5, 0.5) nieuwe_lucht = luchtvochtigheid_data[-1] + random.uniform(-1, 1) temperatuur_data.append(nieuwe_temp) luchtvochtigheid_data.append(nieuwe_lucht) if len(temperatuur_data) > max_data_points: del temperatuur_data[0] del luchtvochtigheid_data[0] del tijden[0] tijden.append(tijden[-1] + 1) # Update lijngrafieken lijn_temperatuur.set_data(tijden, temperatuur_data) lijn_luchtvochtigheid.set_data(tijden, luchtvochtigheid_data) ax_lijn_temperatuur.set_xlim(tijden[0], tijden[-1]) ax_lijn_luchtvochtigheid.set_xlim(tijden[0], tijden[-1]) # Update balkdiagram (met nieuwe random data) for rect, nieuwe_waarde in zip(balk, [random.randint(0, 10) for _ in x_balk]): rect.set_height(nieuwe_waarde) # Update spreidingsdiagram new_x = random.random() new_y = random.random() x_spreiding = np.append(x_spreiding[1:], new_x) y_spreiding = np.append(y_spreiding[1:], new_y) scat.set_offsets(np.c_[x_spreiding, y_spreiding]) return (lijn_temperatuur, lijn_luchtvochtigheid, *balk, scat) # Animatie starten ani = animation.FuncAnimation(fig, update, interval=update_interval, blit=True) plt.tight_layout() plt.show() ``` **Aanpassingen mogelijk:** - Verander `update_interval` voor een ander update-interval. - Pas `kleur_temperatuur` en `kleur_luchtvochtigheid` aan voor andere kleuren. - Pas labels en titels aan in het Nederlands. - Vervang de gesimuleerde data door je echte gegevensbron. **Let op:** Voor echte realtime gegevens moet je de dataverzameling integreren in de `update` functie.
provider: deepseek
model: deepseek-chat
Hier is een complete Python-oplossing voor uw realtime monitoring dashboard: ```python import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np import random from datetime import datetime import time # Stel Nederlandse labels in plt.rcParams['axes.labelsize'] = 12 plt.rcParams['axes.titlesize'] = 14 plt.rcParams['font.family'] = 'DejaVu Sans' class RealtimeMonitor: def __init__(self, update_interval=5000): self.update_interval = update_interval # ms self.temperatuur_data = [] self.luchtvochtigheid_data = [] self.tijden = [] self.fig, ((self.ax1, self.ax2), (self.ax3, self.ax4)) = plt.subplots(2, 2, figsize=(15, 10)) self.fig.suptitle('Realtime Sensormonitor - Temperatuur & Luchtvochtigheid', fontsize=16) # Configureer subplots self.setup_plots() def setup_plots(self): # Lijngrafiek temperatuur self.ax1.set_title('Temperatuur Over Tijd') self.ax1.set_xlabel('Tijd') self.ax1.set_ylabel('Temperatuur (°C)') self.temp_line, = self.ax1.plot([], [], 'b-', linewidth=2, label='Temperatuur') self.ax1.legend() self.ax1.grid(True, alpha=0.3) # Lijngrafiek luchtvochtigheid self.ax2.set_title('Luchtvochtigheid Over Tijd') self.ax2.set_xlabel('Tijd') self.ax2.set_ylabel('Luchtvochtigheid (%)') self.humid_line, = self.ax2.plot([], [], 'g-', linewidth=2, label='Luchtvochtigheid') self.ax2.legend() self.ax2.grid(True, alpha=0.3) # Spreidingsdiagram self.ax3.set_title('Temperatuur vs Luchtvochtigheid') self.ax3.set_xlabel('Temperatuur (°C)') self.ax3.set_ylabel('Luchtvochtigheid (%)') self.scatter_plot = self.ax3.scatter([], [], c='blue', alpha=0.6) self.ax3.grid(True, alpha=0.3) # Balkdiagram voor laatste meting self.ax4.set_title('Laatste Meting') self.ax4.set_ylabel('Waarde') self.bars = self.ax4.bar(['Temperatuur', 'Luchtvochtigheid'], [0, 0], color=['blue', 'green'], alpha=0.7) self.ax4.grid(True, alpha=0.3) # Stel limieten in self.ax1.set_ylim(15, 35) self.ax2.set_ylim(20, 80) self.ax3.set_xlim(15, 35) self.ax3.set_ylim(20, 80) self.ax4.set_ylim(0, 100) plt.tight_layout() def simuleer_sensor_data(self): """Simuleer sensor data (vervang dit met uw echte sensor data)""" temperatuur = random.uniform(18.0, 30.0) luchtvochtigheid = random.uniform(30.0, 70.0) return temperatuur, luchtvochtigheid def update_plots(self, frame): # Haal nieuwe sensor data op temperatuur, luchtvochtigheid = self.simuleer_sensor_data() huidige_tijd = datetime.now() # Voeg data toe aan lijsten (beperk tot laatste 50 metingen) self.temperatuur_data.append(temperatuur) self.luchtvochtigheid_data.append(luchtvochtigheid) self.tijden.append(huidige_tijd) if len(self.temperatuur_data) > 50: self.temperatuur_data.pop(0) self.luchtvochtigheid_data.pop(0) self.tijden.pop(0) # Update lijngrafieken self.temp_line.set_data(range(len(self.temperatuur_data)), self.temperatuur_data) self.humid_line.set_data(range(len(self.luchtvochtigheid_data)), self.luchtvochtigheid_data) # Update spreidingsdiagram self.scatter_plot.set_offsets(np.column_stack((self.temperatuur_data, self.luchtvochtigheid_data))) # Update balkdiagram for bar, height in zip(self.bars, [temperatuur, luchtvochtigheid]): bar.set_height(height) # Update assen limieten voor lijngrafieken self.ax1.set_xlim(0, len(self.temperatuur_data)) self.ax2.set_xlim(0, len(self.luchtvochtigheid_data)) # Voeg tijd labels toe if len(self.tijden) > 1: tijd_labels = [t.strftime('%H:%M:%S') for t in self.tijden] self.ax1.set_xticks(range(len(tijd_labels))) self.ax1.set_xticklabels(tijd_labels, rotation=45) self.ax2.set_xticks(range(len(tijd_labels))) self.ax2.set_xticklabels(tijd_labels, rotation=45) return self.temp_line, self.humid_line, self.scatter_plot, *self.bars def start_monitoring(self): ani = animation.FuncAnimation( self.fig, self.update_plots, interval=self.update_interval, blit=True, cache_frame_data=False ) plt.show() # Configuratie-instellingen UPDATE_INTERVAL = 5000 # 5 seconden in milliseconden # Start het monitoring dashboard if __name__ == "__main__": monitor = RealtimeMonitor(update_interval=UPDATE_INTERVAL) monitor.start_monitoring() ``` **Installatievereisten:** ```bash pip install matplotlib numpy ``` **Aanpassingsopties:** 1. **Update-interval wijzigen:** Pas `UPDATE_INTERVAL` aan (in milliseconden) 2. **Kleuren wijzigen:** Verander 'blue' en 'green' in de plotconfiguraties 3. **Echte sensor data integreren:** Vervang `simuleer_sensor_data()` met uw eigen data-functie 4. **Data-limieten aanpassen:** Wijzig de `set_ylim()` en `set_xlim()` waarden **Gebruik:** - Run het script en het dashboard start automatisch - Data wordt elke 5 seconden bijgewerkt - Alle grafieken updaten realtime met nieuwe metingen De code is volledig in het Nederlands geconfigureerd en gebruikt de opgegeven blauwe en groene kleuren voor de visualisaties.