slogan3

Genereer Matplotlib-visualisaties met aangepaste statistische annotaties

description

Stelt gebruikers in staat om hun datavisualisaties te verrijken met betekenisvolle statistische context, wat de interpretatie en communicatie van inzichten verbetert. Deze prompt gaat verder dan basisplots door statistische annotaties op maat van de gebruiker en de dataset te integreren.

prompt

Help me een Matplotlib-visualisatie te maken voor mijn dataset: <beschrijf je dataset>. Ik wil dat het grafiektype <kies grafiektype> is en dat er aangepaste statistische annotaties worden toegevoegd zoals gemiddelde, med ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van Python-code om een histogram te maken van maandelijkse verkoopgegevens voor verschillende productcategorieën met Matplotlib. De code voegt statistische annotaties toe zoals gemiddelde, mediaan, en betrouwbaarheidsintervallen, inclusief opties voor annotatiestijl en -positie: ```python import matplotlib.pyplot as plt import numpy as np import pandas as pd from scipy import stats # Voorbeelddataset: vervang dit door je eigen dataset # Stel dat je data hebt als een DataFrame met kolommen 'Categorie' en 'Verkoop' # Bijvoorbeeld: # data = pd.read_csv('verkoopgegevens.csv') # Simulatie van gegevens np.random.seed(0) data = pd.DataFrame({ 'Categorie': np.random.choice(['A', 'B', 'C'], size=300), 'Verkoop': np.random.normal(100, 20, size=300) }) # Selecteer een categorie of alle categorieën categorie = 'A' # Of gebruik None voor alle if categorie: dataset = data[data['Categorie'] == categorie]['Verkoop'] else: dataset = data['Verkoop'] # Maak histogram plt.figure(figsize=(10,6)) n, bins, patches = plt.hist(dataset, bins=20, alpha=0.7, color='skyblue', edgecolor='black') # Bereken statistieken mean = np.mean(dataset) median = np.median(dataset) conf_int = stats.t.interval( alpha=0.95, df=len(dataset)-1, loc=mean, scale=stats.sem(dataset) ) # Voeg gemiddelde toe met stippellijn en label plt.axvline(mean, color='red', linestyle='--', linewidth=2, label=f'Mean: {mean:.2f}') plt.text(mean, plt.ylim()[1]*0.9, f'Mean: {mean:.2f}', color='red', rotation=0, ha='center') # Voeg mediaan toe met stippellijn en label plt.axvline(median, color='green', linestyle='--', linewidth=2, label=f'Median: {median:.2f}') plt.text(median, plt.ylim()[1]*0.8, f'Median: {median:.2f}', color='green', rotation=0, ha='center') # Voeg betrouwbaarheidsinterval toe plt.fill_betweenx( y=[0, plt.ylim()[1]], x1=conf_int[0], x2=conf_int[1], color='orange', alpha=0.2, label='95% betrouwbaarheidsinterval' ) # Optioneel: regressielijn (voor lineaire trend) # Als je meerdere data points hebt en een regressie wilt # Hier niet direct van toepassing op histogram, maar kan worden toegevoegd bij scatterplots # Voeg legenda toe plt.legend() # Titels en labels plt.title(f'Maandelijkse Verkoopgegevens - Categorie {categorie}') plt.xlabel('Verkoop') plt.ylabel('Frequentie') plt.show() ``` **Wat deze code doet:** - Laadt of simuleert dataset met verkoop per categorie. - Selecteert een categorie om te visualiseren. - Maakt een histogram van de verkoopgegevens. - Berekent en toont de gemiddelde en mediaan met stippellijnen en tekstlabels. - Voegt een 95% betrouwbaarheidsinterval toe als een gekleurd gebied. - Laat zien hoe je de annotaties duidelijk en visueel onderscheidend maakt. **Aanpassingen:** - Pas `categorie` aan of verwijder de filter om alle data te tonen. - Voeg regressielijnen toe bij geschikte plottypes (bijvoorbeeld scatterplots). - Pas kleuren, stijlen en annotatieposities aan naar wens voor betere visualisatie. Heb je specifieke wensen of data, dan kan ik de code verder aanpassen!
provider: deepseek
model: deepseek-chat
Hier is een Python-code voor een histogram met statistische annotaties voor uw maandelijkse verkoopgegevens: ```python import matplotlib.pyplot as plt import numpy as np import pandas as pd from scipy import stats # Voorbeeld dataset (vervang dit met uw eigen data) data = { 'maand': ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'], 'elektronica': [12000, 15000, 13000, 14000, 16000, 18000, 19000, 17000, 15500, 16500, 17500, 20000], 'kleding': [8000, 9000, 8500, 9500, 11000, 12000, 13000, 11500, 10500, 10000, 9500, 12500], 'huisraad': [5000, 6000, 5500, 6500, 7000, 7500, 8000, 7200, 6800, 7100, 6900, 8200] } df = pd.DataFrame(data) # Selecteer een categorie om te visualiseren categorie = 'elektronica' verkoop_data = df[categorie] # Bereken statistieken gemiddelde = np.mean(verkoop_data) mediaan = np.median(verkoop_data) std_dev = np.std(verkoop_data) betrouwbaarheids_interval = stats.norm.interval(0.95, loc=gemiddelde, scale=std_dev/np.sqrt(len(verkoop_data))) # Maak de visualisatie plt.figure(figsize=(12, 8)) ax = plt.gca() # Histogram met aangepaste stijl n, bins, patches = plt.hist(verkoop_data, bins=6, alpha=0.7, color='skyblue', edgecolor='black', linewidth=1.2, density=False) # Voeg gemiddelde lijn toe plt.axvline(gemiddelde, color='red', linestyle='--', linewidth=2, label=f'Gemiddelde: €{gemiddelde:,.0f}') # Voeg mediaan lijn toe plt.axvline(mediaan, color='green', linestyle='--', linewidth=2, label=f'Mediaan: €{mediaan:,.0f}') # Betrouwbaarheidsinterval gebied plt.axvspan(betrouwbaarheids_interval[0], betrouwbaarheids_interval[1], alpha=0.2, color='orange', label='95% Betrouwbaarheidsinterval') # Regressielijn (lineaire trend) x = range(len(verkoop_data)) slope, intercept, r_value, p_value, std_err = stats.linregress(x, verkoop_data) regressie_lijn = intercept + slope * x plt.plot(x, regressie_lijn, 'purple', linewidth=2, label=f'Trendlijn (R²: {r_value**2:.3f})') # Annotaties en labels plt.xlabel('Verkoopbedrag (€)', fontsize=12, fontweight='bold') plt.ylabel('Frequentie', fontsize=12, fontweight='bold') plt.title(f'Maandelijkse Verkoop - {categorie.capitalize()}\n', fontsize=14, fontweight='bold') # Statistische annotaties toevoegen annotatie_tekst = f'''Statistische Samenvatting: Gemiddelde: €{gemiddelde:,.0f} Mediaan: €{mediaan:,.0f} Standaarddeviatie: €{std_dev:,.0f} Betrouwbaarheidsinterval: [€{betrouwbaarheids_interval[0]:,.0f}, €{betrouwbaarheids_interval[1]:,.0f}] Steekproefgrootte: {len(verkoop_data)} maanden''' plt.annotate(annotatie_tekst, xy=(0.02, 0.98), xycoords='axes fraction', bbox=dict(boxstyle="round,pad=0.5", facecolor="white", alpha=0.8), fontsize=10, verticalalignment='top') # Legenda plt.legend(loc='upper right', frameon=True, fancybox=True, shadow=True) # Grid voor betere leesbaarheid plt.grid(alpha=0.3, linestyle='--') # Formatteer y-as voor euro bedragen plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'€{x:,.0f}')) plt.tight_layout() plt.show() # Optioneel: print statistieken in console print(f"Statistieken voor {categorie}:") print(f"Gemiddelde: €{gemiddelde:,.2f}") print(f"Mediaan: €{mediaan:,.2f}") print(f"Standaarddeviatie: €{std_dev:,.2f}") print(f"95% Betrouwbaarheidsinterval: [€{betrouwbaarheids_interval[0]:,.2f}, €{betrouwbaarheids_interval[1]:,.2f}]") ``` **Aanpasopties voor annotatiestijlen en posities:** 1. **Annotatiepositie**: Pas `xy=(0.02, 0.98)` aan om de tekstbox te verplaatsen 2. **Lijnstijlen**: Verander `linestyle` ('-', '--', '-.', ':') 3. **Kleuren**: Wijzig `color` parameters voor verschillende categorieën 4. **Transparantie**: Pas `alpha` waarden aan (0-1) 5. **Fontgrootte**: Verander `fontsize` in de annotaties 6. **Legendapositie**: Gebruik `loc` parameter ('upper left', 'lower right', etc.) **Voor meerdere categorieën**: Maak een subplot voor elke categorie of gebruik een gestapeld histogram met verschillende kleuren per categorie.