slogan3

Voer Geavanceerde Data-Exploratie uit met Matplotlib

description

Met deze prompt kun je diepere inzichten uit je dataset halen door geavanceerde visualisatietechnieken toe te passen die verder gaan dan standaard grafieken. Dit helpt patronen en relaties duidelijk te maken die anders verborgen blijven, en de geautomatiseerde Python-code bespaart tijd en moeite.

prompt

Help me een Matplotlib-visualisatie te maken die uitgebreide data-exploratie ondersteunt voor mijn dataset: <beschrijving van je dataset>. Ik wil functies zoals meerdere subplots, aangepaste assen ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hieronder vind je een voorbeeld van Python-code die een uitgebreide data-exploratie visualiseert voor jouw dataset met maandelijkse omzet en aantal orders per regio voor 2023. De visualisatie bevat meerdere subplots, aangepaste assen, annotaties, kleuren, labels, en een titel bovenaan met legenda rechts. ```python import matplotlib.pyplot as plt import pandas as pd import numpy as np # Voorbeeldgegevens maken (vervang dit met je eigen dataset) # Data voorbeeld: 2 regio's, maandelijkse data data = { 'Maand': pd.date_range(start='2023-01-01', periods=12, freq='MS'), 'Regio A Omzet': np.random.randint(2000, 5000, size=12), 'Regio B Omzet': np.random.randint(1500, 4500, size=12), 'Regio A Orders': np.random.randint(50, 150, size=12), 'Regio B Orders': np.random.randint(40, 130, size=12), } df = pd.DataFrame(data) # Een figure maken met meerdere subplots fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(14, 10), sharex=True) # 1. Maandelijkse omzet per regio (lijnplot) axes[0].plot(df['Maand'], df['Regio A Omzet'], label='Regio A', color='red', marker='o') axes[0].plot(df['Maand'], df['Regio B Omzet'], label='Regio B', color='green', marker='s') axes[0].set_title('Maandelijkse Omzet in 2023', fontsize=14, fontweight='bold') axes[0].set_ylabel('Omzet (€)') axes[0].legend(loc='center right') # Rechtse positie voor legenda axes[0].grid(True) # 2. Maandelijkse aantal orders per regio (balkendiagram) width = 15 # breedte van de balken in dagen ax2 = axes[1] ax2.bar(df['Maand'] - pd.Timedelta(days=width/2), df['Regio A Orders'], width=width, label='Regio A', color='red', align='edge') ax2.bar(df['Maand'] + pd.Timedelta(days=width/2), df['Regio B Orders'], width=width, label='Regio B', color='green', align='edge') ax2.set_ylabel('Aantal Orders') ax2.set_title('Maandelijkse Aantal Orders in 2023') ax2.legend(loc='center right') ax2.grid(axis='y') # 3. Combinatie van omzet en orders voor inzicht # Bijvoorbeeld: omzet en orders in één plot met verschillende y-as ax3 = axes[2] ax3.bar(df['Maand'], df['Regio A Omzet'], color='red', alpha=0.6, label='Regio A Omzet') ax3.set_ylabel('Regio A Omzet (€)', color='red') ax3.tick_params(axis='y', labelcolor='red') ax3_twin = ax3.twinx() ax3_twin.plot(df['Maand'], df['Regio A Orders'], color='blue', marker='x', label='Regio A Orders') ax3_twin.set_ylabel('Regio A Orders', color='blue') ax3_twin.tick_params(axis='y', labelcolor='blue') # Annotaties toevoegen voor belangrijke punten for i, (omzet, orders) in enumerate(zip(df['Regio A Omzet'], df['Regio A Orders'])): if omzet > 4500: ax3.annotate('Top omzet', (df['Maand'][i], omzet), textcoords="offset points", xytext=(0,10), ha='center', color='red') if orders > 140: ax3_twin.annotate('Veel orders', (df['Maand'][i], orders), textcoords="offset points", xytext=(0,10), ha='center', color='blue') # Titel bovenaan plt.suptitle('Data-analyse van Maandelijkse Omzet en Orders in 2023', fontsize=16, fontweight='bold') # Layout aanpassen voor duidelijkheid plt.tight_layout(rect=[0, 0.03, 1, 0.95]) plt.show() ``` **Wat doet deze code?** - Maakt voorbeeldgegevens; vervang deze door je eigen dataset. - Plot 1: Lijnplot van maandelijkse omzet per regio met gekleurde lijnen en markers. - Plot 2: Gestapelde balken voor aantal orders per regio per maand. - Plot 3: Combinatie van omzet en orders voor een regio met verschillende y-assen, inclusief annotaties voor belangrijke punten. - Legenda's rechts geplaatst, titels bovenaan, en een overzichtelijke layout. Pas de kleuren, labels en annotaties aan op basis van je specifieke data en inzichten.
provider: deepseek
model: deepseek-chat
Hier is een complete Python-code voor uw data-exploratie visualisatie: ```python import matplotlib.pyplot as plt import numpy as np import pandas as pd from datetime import datetime # Voorbeeld dataset (vervang dit met uw eigen data) data = { 'maand': ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'], 'noord_omzet': [12000, 14500, 13200, 15800, 16700, 18200, 19500, 21000, 19800, 17600, 16300, 18900], 'noord_orders': [45, 52, 48, 56, 61, 67, 72, 78, 74, 65, 59, 68], 'zuid_omzet': [9800, 11200, 10500, 12400, 13800, 15200, 16500, 17800, 16200, 14700, 13400, 15600], 'zuid_orders': [38, 43, 41, 48, 53, 59, 64, 70, 63, 56, 51, 61], 'oost_omzet': [8500, 9200, 8800, 10200, 11500, 12800, 14200, 15300, 13900, 12500, 11200, 13200], 'oost_orders': [32, 36, 34, 40, 45, 50, 55, 60, 54, 47, 42, 52], 'west_omzet': [10500, 11800, 11200, 13200, 14500, 15800, 17200, 18500, 17000, 15400, 14200, 16300], 'west_orders': [41, 46, 44, 51, 56, 62, 67, 73, 66, 58, 53, 63] } df = pd.DataFrame(data) # Stel matplotlib stijl in plt.style.use('default') fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 10)) fig.suptitle('Maandelijkse Prestaties per Regio - 2023\nOmzet en Aantal Orders', fontsize=16, fontweight='bold', y=0.98) # Kleuren instellen kleuren_omzet = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#F9A826'] # Rood, groen, blauw, oranje kleuren_orders = ['#FF9999', '#88D8C0', '#7BC8F6', '#FBC02D'] # Lichtere varianten # Regio's regios = ['Noord', 'Zuid', 'Oost', 'West'] axes = [ax1, ax2, ax3, ax4] for i, (regio, ax) in enumerate(zip(regios, axes)): # Omzet data omzet_data = df[f'{regio.lower()}_omzet'] # Orders data orders_data = df[f'{regio.lower()}_orders'] # Primaire Y-as voor omzet bars = ax.bar(range(len(df['maand'])), omzet_data, color=kleuren_omzet[i], alpha=0.7, label='Omzet (€)') # Secundaire Y-as voor orders ax2_orders = ax.twinx() line = ax2_orders.plot(range(len(df['maand'])), orders_data, color=kleuren_orders[i], marker='o', linewidth=2, markersize=6, label='Aantal Orders') # Titel en labels ax.set_title(f'Regio {regio}', fontweight='bold') ax.set_xlabel('Maand') ax.set_ylabel('Omzet (€)', color=kleuren_omzet[i]) ax2_orders.set_ylabel('Aantal Orders', color=kleuren_orders[i]) # X-as instellen ax.set_xticks(range(len(df['maand']))) ax.set_xticklabels(df['maand'], rotation=45) # Grid toevoegen ax.grid(True, alpha=0.3) # Annotaties toevoegen voor hoogste en laagste waarden max_omzet_idx = omzet_data.idxmax() min_omzet_idx = omzet_data.idxmin() # Hoogste omzet annotatie ax.annotate(f'Hoogste: €{omzet_data[max_omzet_idx]:,.0f}', xy=(max_omzet_idx, omzet_data[max_omzet_idx]), xytext=(max_omzet_idx, omzet_data[max_omzet_idx] + 1000), arrowprops=dict(arrowstyle='->', color='red'), fontweight='bold', color='red') # Laagste omzet annotatie (alleen als niet te dicht bij 0) if omzet_data[min_omzet_idx] > min(omzet_data) * 1.1: ax.annotate(f'Laagste: €{omzet_data[min_omzet_idx]:,.0f}', xy=(min_omzet_idx, omzet_data[min_omzet_idx]), xytext=(min_omzet_idx, omzet_data[min_omzet_idx] - 1500), arrowprops=dict(arrowstyle='->', color='blue'), fontweight='bold', color='blue') # Legenda toevoegen handles1, labels1 = ax1.get_legend_handles_labels() handles2, labels2 = ax2_orders.get_legend_handles_labels() fig.legend(handles1 + handles2, labels1 + labels2, loc='right', bbox_to_anchor=(0.98, 0.5), fontsize=10, frameon=True, shadow=True) # Layout optimaliseren plt.tight_layout() plt.subplots_adjust(top=0.92, right=0.85) # Toon de plot plt.show() # Optioneel: Totale statistieken weergeven print("\nTotale Statistieken 2023:") print("=" * 40) for regio in regios: totaal_omzet = df[f'{regio.lower()}_omzet'].sum() totaal_orders = df[f'{regio.lower()}_orders'].sum() gem_waarde = totaal_omzet / totaal_orders print(f"{regio}: €{totaal_omzet:,.0f} omzet, {totaal_orders} orders") print(f" Gemiddelde orderwaarde: €{gem_waarde:,.0f}") ``` Deze code bevat: 1. **Meerdere subplots** - 2x2 grid voor elke regio 2. **Dual Y-assen** - Omzet (bars) en orders (lijn) op aparte assen 3. **Rood/groen kleurenschema** met verschillende tinten 4. **Annotaties** voor hoogste/laagste waarden 5. **Professionele opmaak** met grid, legenda en titels 6. **Titel bovenaan** en **legenda rechts** 7. **Complete labels** en aanpassingen **Om uw eigen data te gebruiken:** - Vervang de `data` dictionary met uw werkelijke data - Pas de regio-namen aan in de `regios` lijst - Zorg dat de kolomnamen overeenkomen met de regio's De visualisatie toont maandelijkse trends, pieken/dalen en maakt vergelijking tussen regio's eenvoudig!