Pandas & NumPy Academy · Lektion

Etiketter, rubriker och att spara figurer

Lägg till axelrubriker, en titel, en förklaring och formatering av skalmarkeringar och spara sedan figurer med publiceringskvalitet med savefig().

Lektion 4 av 413 steg

Etiketter, rubriker och att spara figurer är en gratis lektion i Pandas & NumPy Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Pandas & NumPy Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.

Från diagram till publikation

Ett diagram är bara effektivt om axlarna är märkta, rubriken förklarar huvudbudskapet och diagrammet sparas med tillräckligt hög upplösning för det avsedda mediet. I den här lektionen går vi igenom de sista detaljerna som omvandlar ett snabbt, explorativt diagram till en välbearbetad figur som passar i en rapport, instrumentpanel eller akademisk publikation: ax etiketter, formatering av skalstreck, rubriker, förklaringar, annoteringar och filexport.

Ax etiketter med set_xlabel och set_ylabel

Ange beskrivande ax etiketter med ax.set_xlabel() och ax.set_ylabel(). Ta alltid med enheter i etiketten, till exempel 'Revenue (USD)' i stället för bara 'Revenue'. Använd fontsize för att göra etiketterna större i presentationer och labelpad för att skapa mer utrymme mellan axeln och etiketttexten när skalstrecken är stora.

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')

ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()

Rubriker med set_title och suptitle

ax.set_title() anger rubriken ovanför en enskild Axes. För figurer med flera paneler lägger fig.suptitle() till en gemensam rubrik ovanför alla underdiagram. Styr teckenstorleken med fontsize och den vertikala positionen med y (standardvärde 1.0). En bra rubrik anger diagrammets viktigaste insikt, inte bara vad axlarna visar – jämför 'Monthly Revenue' med 'Revenue Peaked in Q3 and Fell 20% in Q4'.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)

ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)

# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()

Styra skalstrecksetiketter

Matplotlibs standardetiketter för skalstreck är ofta tillräckliga, men ibland behöver du anpassade etiketter. Använd ax.set_xticks() för att ange skalstreckens positioner och ax.set_xticklabels() för att ange etiketterna. Ange rotation=45 för att luta långa etiketter så att de inte överlappar varandra. Parametern ha='right' (horisontell justering) ser till att roterade etiketter förankras korrekt vid sina skalstreck.

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)

fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Formatera skalstrecksvärden

Använd formaterare från matplotlib.ticker för att visa skalstrecksvärden i ett lättläst format. FuncFormatter tar en funktion som tar emot skalstrecksvärdet och returnerar en formaterad sträng. Vanliga format är tusentalsavgränsare, valutasymbol, procenttecken och vetenskaplig notation. Tillämpa formateraren med ax.yaxis.set_major_formatter(formatter).

from matplotlib.ticker import FuncFormatter

def millions_fmt(x, pos):
    return f'${x/1e6:.1f}M'

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Förklaringar med ax.legend()

Anropa ax.legend() för att visa en förklaring för alla diagramelement som har angett parametern label. Anpassa den med loc (position, till exempel 'upper right' eller 'lower left'), ncol (antal kolumner), framealpha (rutans genomskinlighet) och fontsize. Om du vill placera förklaringen utanför diagramområdet använder du bbox_to_anchor tillsammans med loc.

fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
    ax.plot(range(12), np.random.randint(100, 400, 12),
            marker='o', label=region, color=color)

ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()

Lägga till textannoteringar

ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) lägger till en textetikett med en valfri pil som pekar på en specifik datapunkt. Använd detta för att framhäva maxvärden, avvikelser eller viktiga händelser i ett diagram. Ordboken arrowprops styr pilens utseende: arrowstyle='->' är en enkel pil.

y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
            xy=(peak_idx, y_vals[peak_idx]),
            xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
            arrowprops={'arrowstyle': '->', 'color': 'red'},
            fontsize=10, color='red')
plt.close()

Lägga till horisontella och vertikala referenslinjer

ax.axhline(y_value) ritar en horisontell linje över hela Axes bredd vid det angivna y-värdet. ax.axvline(x_value) ritar en vertikal linje. Båda accepterar parametrarna color, linestyle och linewidth. Referenslinjer används ofta för att markera mål, tröskelvärden eller händelsedatum i tidsseriediagram.

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')

# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')

# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')

ax.legend()
ax.set_title('Revenue vs Target')
plt.close()

Formge med teman

Matplotlib innehåller flera inbyggda formatmallar som ändrar det övergripande utseendet för alla figurer utan att koden behöver ändras: 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh' med flera. Tillämpa en stil med plt.style.use('style_name') i början av skriptet. Använd plt.style.context('style_name') som en kontexthanterare för att bara tillämpa en stil inom ett kodblock.

# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()

# Reset to default
plt.rcdefaults()

Spara figurer med savefig()

fig.savefig('filename.png') sparar figuren i en fil. Viktiga parametrar är dpi (punkter per tum – använd 150 för skärm och 300 för utskrift), bbox_inches='tight' (förhindrar att etiketter beskärs) och format (identifieras från filändelsen eller anges uttryckligen). Vanliga format är '.png' (rasterformat, bra för webben), '.pdf' (vektorformat, bra för utskrift) och '.svg' (vektorformat, redigerbart i Illustrator).

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')

# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')

# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')

plt.close()
print('Figures saved.')

Komplett exempel: välbearbetat rapportdiagram

Här är ett komplett arbetsflöde som kombinerar alla tekniker i den här lektionen: ett välbearbetat tidsseriediagram med ax etiketter, formaterade y-axelvärden, en horisontell mållinje, en annotering vid toppen och export till en PNG-fil med hög upplösning. Det här är mönstret du använder för alla diagram som ska ingå i en rapport eller instrumentpanel.

from matplotlib.ticker import FuncFormatter

fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)

ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
            xytext=(peak_idx-1.5, peak+15),
            arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
                    'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()

Snabbtest

Testa dina kunskaper om etiketter, rubriker och hur man sparar figurer från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har du lärt dig att set_xlabel()/set_ylabel()/set_title() lägger till beskrivande text; FuncFormatter formaterar skalstrecksvärden som valutor eller procenttal; ax.annotate() lägger till textetiketter med pilar för att framhäva viktiga datapunkter; axhline()/axvline() ritar referenslinjer; och fig.savefig() med dpi och bbox_inches='tight' skapar exportfiler med publiceringskvalitet. Detta avslutar kursen Matplotlib Fundamentals – härnäst kommer Seaborn för statistiska diagram.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Etiketter, rubriker och att spara figurer” gratis?

Ja – hela texten till ”Etiketter, rubriker och att spara figurer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Pandas & NumPy Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Pandas & NumPy Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Etiketter, rubriker och att spara figurer”?

Lägg till axelrubriker, en titel, en förklaring och formatering av skalmarkeringar och spara sedan figurer med publiceringskvalitet med savefig(). Ni övar på Pandas & NumPy Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Pandas & NumPy Academy?

Du behöver inga förkunskaper. Utbildningen i Pandas & NumPy Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Etiketter, rubriker och att spara figurer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Pandas & NumPy Academy-lektionen?

Ja. Varje Pandas & NumPy Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Figur- och axelarkitektur
  2. Linje- och punktdiagram
  3. Stapeldiagram och histogram
  4. Etiketter, rubriker och att spara figurer
← Tillbaka till Pandas & NumPy Academy