slogan3

Ontwerp Geavanceerde Seaborn Visualisaties met Meerdere Facetten en Gegevensbronnen

description

Met deze prompt kan ik complexe Seaborn visualisaties maken die meerdere datasets en facetten combineren, waardoor ik diepere inzichten verkrijg en mijn data overzichtelijk en professioneel presenteer. Dit lost het probleem op van het samenbrengen van diverse data en het overzichtelijk visualiseren van complexe relaties, beter dan eenvoudige enkele grafieken.

prompt

Help me een complexe Seaborn visualisatie te ontwerpen die meerdere facetten combineert en data integreert uit verschillende bronnen. Beschrijving van mijn datasets: <beschrijf de verschillende datasets die ik wil combineren>. Welke facetten wil ik gebruiken voor segmentatie: <noem de kolommen voor facetting, bij ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3692 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3692 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Absoluut. Hier is een gedetailleerd, stap-voor-stap plan in het Nederlands voor het creëren van de complexe Seaborn visualisatie die u beschrijft. ### Stap 1: Importeer de Benodigde Bibliotheken ```python import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from matplotlib.patches import Rectangle ``` ### Stap 2: Data Voorbereiding en Integratie Aangezien uw data uit twee bronnen komt, is de eerste stap het samenvoegen (mergen) op een gemeenschappelijke sleutel, zoals een `klant_id` of `transactie_id`. ```python # Laad de datasets df_financieel = pd.read_csv('financiële_resultaten.csv') df_demografisch = pd.read_csv('demografische_klantgegevens.csv') # Voeg de datasets samen op een gemeenschappelijke sleutel # Vervang 'gemeenschappelijke_sleutel' door de daadwerkelijke kolomnaam (bijv. 'klant_id') df_geïntegreerd = pd.merge(df_financieel, df_demografisch, on='gemeenschappelijke_sleutel') # Controleer het resultaat print(df_geïntegreerd.head()) ``` ### Stap 3: Data Transformatie (Indien Nodig) Zorg ervoor dat de kolommen voor uw facetten het juiste datatype hebben. ```python # Zorg dat 'Kwartaal' een categorische volgorde heeft (Q1, Q2, Q3, Q4) df_geïntegreerd['Kwartaal'] = pd.Categorical(df_geïntegreerd['Kwartaal'], categories=['Q1', 'Q2', 'Q3', 'Q4'], ordered=True) # Zorg dat 'Productcategorie' een category is (optie, maar vaak efficiënter) df_geïntegreerd['Productcategorie'] = df_geïntegreerd['Productcategorie'].astype('category') ``` ### Stap 4: Opzetten van de Visualisatie en Stijl ```python # Stel het donkere thema in sns.set_theme(style="darkgrid") plt.rcParams['figure.facecolor'] = '0.1' # Zeer donkergrijs voor de figuurachtergrond plt.rcParams['axes.facecolor'] = '0.2' # Donkergrijs voor de plot-achtergrond plt.rcParams['text.color'] = '0.9' # Bijna witte tekstkleur plt.rcParams['axes.labelcolor'] = '0.9' plt.rcParams['xtick.color'] = '0.9' plt.rcParams['ytick.color'] = '0.9' # Creëer een FacetGrid object voor de segmentatie g = sns.FacetGrid( df_geïntegreerd, row='Productcategorie', # Rijfacet col='Kwartaal', # Kolomfacet margin_titles=True, # Nette titels sharex=True, # **CRUCIAAL: Synchroniseer X-as** sharey=True, # **CRUCIAAL: Synchroniseer Y-as** height=4, # Hoogte van elke subplot aspect=1.2 # Breedte/hoogte verhouding ) ``` ### Stap 5: Grafieken Toevoegen aan het Grid We gebruiken `.map_dataframe()` om meerdere grafieken in elk facet te tekenen. We tekenen eerst het histogram en dan de boxplot overheen. ```python # Definieer een functie die een histogram en boxplot combineert def combined_plot(data, **kwargs): # Verkrijg de kleur uit de palette (voor synchronisatie) color = sns.color_palette()[0] # Teken histogram sns.histplot( data=data, x='Waarde', # Vervang 'Waarde' door de naam van uw numerieke variabele (bijv. 'Omzet', 'Winst') kde=True, # Voeg een Kernel Density Estimate lijn toe alpha=0.5, # Doorzichtigheid van de bars color=color, **kwargs ) # Teken boxplot. We gebruiken `boxprops` om de kleur te synchroniseren. sns.boxplot( data=data, x='Waarde', color=color, boxprops=dict(alpha=0.7, facecolor=color, linewidth=2), whiskerprops=dict(color=color, linewidth=2), capprops=dict(color=color, linewidth=2), medianprops=dict(color='red', linewidth=2), # Maak de mediaan rood voor nadruk width=0.2 ) # Pas de combined_plot functie toe op elk facet in het grid g.map_dataframe(combined_plot) # Stel de hoofdtitel in g.fig.suptitle('Distributie van Financiële Waarde per Productcategorie en Kwartaal', fontsize=16, y=1.02, color='white') ``` ### Stap 6: Annotaties Toevoegen Dit is het meest handmatige deel. U kunt belangrijke datapunten (bijv. mediaan, uitbijters) vinden en labelen. ```python # Voorbeeld: Vind de mediaan voor een specifieke categorie en kwartaal # Dit zou in een loop moeten voor de belangrijkste punten die u wilt benadrukken. # Bijv. voor Productcategorie='A' en Kwartaal='Q1' subset = df_geïntegreerd[(df_geïntegreerd['Productcategorie'] == 'A') & (df_geïntegreerd['Kwartaal'] == 'Q1')] median_val = subset['Waarde'].median() # Vind de ax (subplot) voor dat specifieke facet. # U moet de rij- en kolomindex weten. Dit vereist enige experimentatie. # ax = g.axes[rij_index, kolom_index] (indexering begint bij 0) # Annoteer de mediaan op die ax # ax.axvline(median_val, color='red', linestyle='--', alpha=0.8) # ax.text(median_val, ax.get_ylim()[1]*0.9, f'Mediaan: {median_val:.2f}', color='red', ha='center') ``` ### Stap 7: Afronden en Tonen ```python # Pas de layout aan om overlapping te voorkomen g.tight_layout() # Pas de assenlabels aan g.set_axis_labels('Financiële Waarde (€)', 'Aantal') plt.show() ``` ### Belangrijke Punten en Aandachtspunten: 1. **Kolomnamen:** Vervang `'Waarde'`, `'Productcategorie'`, `'Kwartaal'`, en `'gemeenschappelijke_sleutel'` door de exacte namen van de kolommen in uw DataFrames. 2. **Annotaties:** Het toevoegen van automatische annotaties voor elk facet is complex en vereist vaak het itereren over `g.axes.flat` en het berekenen van statistieken voor elke subset data. Het voorbeeld hierboven toont de principes voor één facet. 3. **Kleuren:** De code gebruikt `sns.color_palette()[0]` om de eerste kleur uit het actieve Seaborn kleurenpalet te halen. Dit garandeert dat het histogram en de boxplot in elk facet de *zelfde* kleur gebruiken, wat voldoet aan uw synchronisatie-eis. U kunt een specifiek palet instellen met `sns.set_palette("viridis")` aan het begin. 4. **Performanie:** Voor zeer grote datasets kan een `FacetGrid` met gecombineerde plots traag worden. Overweeg dan om een sample van uw data te nemen voor exploratieve analyse. Deze code geeft u een robuuste basis om uw geïntegreerde data te visualiseren volgens uw specifieke, geavanceerde eisen.