Maak Matplotlib-visualisaties met aangepaste export- en deelopties
description
Met deze prompt kun je Matplotlib-visualisaties maken die niet alleen visueel aantrekkelijk zijn, maar ook praktisch voor verspreiding en samenwerking. Door export- en deelmogelijkheden direct in de visualisatiecode op te nemen, bespaar je tijd en verbeter je de efficiëntie van je workflow, waardoor het eenvoudiger wordt om je data-inzichten in verschillende formaten en op diverse platforms te presenteren en te delen.
prompt
Help me een Matplotlib-visualisatie te maken voor mijn dataset: <beschrijf je dataset>. Ik wil dat de visualisatie exportmogelijkheden ondersteunt in formaten zoals <gewenste exportformaten, bijvoorbeeld PNG, SVG, PDF> en opties vo ...
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=3643 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3643 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Hier is een complete Python-oplossing met Matplotlib die aan al uw vereisten voldoet:
```python
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from datetime import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import os
# Voorbeeld dataset (vervang met uw eigen data)
maanden = ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']
verkopen = [12000, 15000, 18000, 21000, 24000, 27000,
30000, 28000, 32000, 35000, 38000, 42000]
# Stijl instellen
plt.style.use('default')
fig, ax = plt.subplots(figsize=(12, 7))
# Kleuren instellen (blauw en grijs)
kleuren = ['#1f77b4', '#7f7f7f'] # Matplotlib standaard blauw en grijs
# Data plotten
bars = ax.bar(maanden, verkopen, color=kleuren[0], alpha=0.8, edgecolor='white')
# Stijl en layout aanpassingen
ax.set_facecolor('#f8f9fa') # Lichtgrijze achtergrond
fig.patch.set_facecolor('white')
# Rasterlijnen toevoegen
ax.grid(True, alpha=0.3, linestyle='--', color=kleuren[1])
ax.set_axisbelow(True) # Zorgt dat grid achter de bars staat
# Assen labels en titel
ax.set_xlabel('Maand', fontsize=12, fontweight='bold', color=kleuren[1])
ax.set_ylabel('Verkoopbedrag (€)', fontsize=12, fontweight='bold', color=kleuren[1])
ax.set_title('Maandelijkse Verkoopcijfers 2023', fontsize=16, fontweight='bold', pad=20)
# Waarden boven de bars plaatsen
for bar in bars:
height = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2., height + 500,
f'€{height:,.0f}'.replace(',', '.'), # Europese notatie
ha='center', va='bottom', fontsize=10, fontweight='bold')
# Y-as formatteren voor Europese notatie
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'€{x:,.0f}'.replace(',', '.')))
# Layout optimaliseren
plt.xticks(rotation=45)
plt.tight_layout()
# Export functies
def export_grafiek(formaat):
"""Exporteer de grafiek in verschillende formaten"""
bestandsnaam = f"verkoopcijfers_2023_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
formaten = {
'png': {'ext': '.png', 'dpi': 300},
'svg': {'ext': '.svg', 'dpi': None},
'pdf': {'ext': '.pdf', 'dpi': None}
}
if formaat in formaten:
export_bestand = bestandsnaam + formaten[formaat]['ext']
plt.savefig(export_bestand,
format=formaat,
dpi=formaten[formaat]['dpi'],
bbox_inches='tight',
facecolor=fig.get_facecolor())
print(f"Grafiek geëxporteerd als: {export_bestand}")
return export_bestand
else:
print("Ongeldig formaat. Kies uit: png, svg, pdf")
return None
def verstuur_email(ontvanger, bijlage_pad):
"""Verstuur grafiek via email (vereist SMTP configuratie)"""
try:
# SMTP configuratie (pas aan naar uw email provider)
smtp_server = "smtp.gmail.com"
smtp_port = 587
afzender_email = "uw_email@gmail.com"
wachtwoord = "uw_wachtwoord"
# Email opstellen
msg = MIMEMultipart()
msg['From'] = afzender_email
msg['To'] = ontvanger
msg['Subject'] = "Maandelijkse Verkoopcijfers 2023"
body = "Bijgevoegd vindt u de maandelijkse verkoopcijfers voor 2023."
msg.attach(MIMEText(body, 'plain'))
# Bijlage toevoegen
with open(bijlage_pad, "rb") as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',
f'attachment; filename= {os.path.basename(bijlage_pad)}')
msg.attach(part)
# Verbinding maken en email versturen
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(afzender_email, wachtwoord)
text = msg.as_string()
server.sendmail(afzender_email, ontvanger, text)
server.quit()
print(f"Email succesvol verstuurd naar: {ontvanger}")
except Exception as e:
print(f"Fout bij verzenden email: {str(e)}")
def web_embed_code():
"""Genereer HTML embed code voor web"""
embed_code = f"""
<!-- Embed code voor verkoopgrafiek 2023 -->
<div style="text-align: center;">
<img src="verkoopcijfers_2023.png" alt="Maandelijkse Verkoopcijfers 2023"
style="max-width: 100%; height: auto; border: 1px solid #ddd; border-radius: 5px;">
<p style="color: #666; font-size: 12px; margin-top: 5px;">
Maandelijkse verkoopcijfers 2023 - Laatst bijgewerkt: {datetime.now().strftime('%d-%m-%Y')}
</p>
</div>
"""
print("HTML embed code gegenereerd:")
print(embed_code)
return embed_code
# Toon de grafiek
plt.show()
# Gebruiksvoorbeelden (uncomment om te gebruiken):
"""
# Exporteer als PNG
export_bestand = export_grafiek('png')
# Exporteer als SVG
export_grafiek('svg')
# Exporteer als PDF
export_grafiek('pdf')
# Verstuur via email (configureer eerst SMTP instellingen)
# verstuur_email("ontvanger@voorbeeld.nl", export_bestand)
# Genereer web embed code
web_embed_code()
"""
```
Deze code bevat:
**Visualisatie Kenmerken:**
- Blauwe bars met grijze achtergrond en rasterlijnen
- Professionele Europese valuta-notatie (€ met punt als scheiding)
- Gelabelde assen met duidelijke titels
- Responsieve layout
**Exportmogelijkheden:**
- PNG (hoogwaardige 300 DPI)
- SVG (vector formaat)
- PDF (print-vriendelijk)
**Deelopties:**
- Email verzending via SMTP
- HTML embed code voor websites
- Automatische bestandsnaamgeneratie met timestamp
**Gebruik:**
1. Vervang de voorbeelddata met uw eigen verkoopcijfers
2. Configureer email instellingen voor SMTP
3. Uncomment de gewenste export/deel functies
4. Pas kleuren en stijl verder aan naar wens
De grafiek wordt automatisch opgeslagen met een timestamp in de bestandsnaam om versiebeheer mogelijk te maken.