Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Legge til Forklaring | Tilpasning av Diagrammer
Ultimate Visualisering med Python

Sveip for å vise menyen

book
Legge til Forklaring

Når flere elementer er til stede i et diagram, er det ofte nyttig å merke dem for å gjøre diagrammet tydeligere. Forklaringen (legend) fyller denne rollen ved å gi et kompakt område som forklarer de ulike komponentene i diagrammet.

Følgende er tre vanlige måter å lage en forklaring på i matplotlib.

Første alternativ

Vurder følgende eksempel for å tydeliggjøre konseptet:

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Øverst til venstre forklarer en forklaring de ulike stolpene i diagrammet. Denne forklaringen opprettes ved hjelp av funksjonen plt.legend(), hvor en liste med etiketter sendes som første argument—vanligvis referert til som labels.

Andre alternativ

Et annet alternativ innebærer å spesifisere parameteren label i hvert kall til plottfunksjonen, som for eksempel bar i vårt eksempel:

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Her bestemmer plt.legend() automatisk hvilke elementer som skal legges til i forklaringen og deres etiketter; alle elementer med angitt label-parameter blir inkludert.

Tredje alternativ

Faktisk finnes det enda et alternativ ved å bruke set_label()-metoden på artist-objektet (bar i vårt eksempel):

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Plassering av forklaring

Det finnes et annet viktig nøkkelargument for funksjonen legend(), nemlig loc, som angir plasseringen av forklaringen. Standardverdien er best, som "forteller" matplotlib å automatisk velge den beste plasseringen for forklaringen for å unngå overlapping med data.

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

I dette eksemplet er forklaringen plassert øverst i midten av diagrammet. Andre gyldige verdier for parameteren loc inkluderer:

  • 'upper right', 'upper left', 'lower left';

  • 'lower right', 'right';

  • 'center left', 'center right', 'lower center', 'center'.

Note
Les mer

Du kan utforske mer i legend() dokumentasjon

Oppgave

Swipe to start coding

  1. Merk de laveste stolpene som 'primary sector' ved å angi riktig nøkkelordargument.
  2. Merk stolpene i midten som 'secondary sector' ved å angi riktig nøkkelordargument.
  3. Merk de øverste stolpene som 'tertiary sector' ved å angi riktig nøkkelordargument.
  4. Plasser forklaringen på høyre side, sentrert vertikalt.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2
Vi beklager at noe gikk galt. Hva skjedde?

Spør AI

expand
ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

book
Legge til Forklaring

Når flere elementer er til stede i et diagram, er det ofte nyttig å merke dem for å gjøre diagrammet tydeligere. Forklaringen (legend) fyller denne rollen ved å gi et kompakt område som forklarer de ulike komponentene i diagrammet.

Følgende er tre vanlige måter å lage en forklaring på i matplotlib.

Første alternativ

Vurder følgende eksempel for å tydeliggjøre konseptet:

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np # Define categories and data questions = ['question_1', 'question_2', 'question_3'] yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) # Set positions and bar width positions = np.arange(len(questions)) width = 0.3 # Create the grouped bar chart for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) # Adjust x-axis ticks to the center of groups plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Setting the labels for the legend explicitly plt.legend(['positive answers', 'negative answers']) plt.show()
copy

Øverst til venstre forklarer en forklaring de ulike stolpene i diagrammet. Denne forklaringen opprettes ved hjelp av funksjonen plt.legend(), hvor en liste med etiketter sendes som første argument—vanligvis referert til som labels.

Andre alternativ

Et annet alternativ innebærer å spesifisere parameteren label i hvert kall til plottfunksjonen, som for eksempel bar i vårt eksempel:

1234567891011121314151617181920212223242526272829
import matplotlib.pyplot as plt import numpy as np # Define x-axis categories and their positions questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) # Define answers for each category yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) labels = ['positive answers', 'negative answers'] # Set the width for each bar width = 0.3 # Plot each category with a label for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width, label=labels[i]) # Set x-axis ticks and labels at the center of each group plt.xticks(positions + width * (len(answers) - 1) / 2, questions) # Automatically create legend from label parameters plt.legend() plt.show()
copy

Her bestemmer plt.legend() automatisk hvilke elementer som skal legges til i forklaringen og deres etiketter; alle elementer med angitt label-parameter blir inkludert.

Tredje alternativ

Faktisk finnes det enda et alternativ ved å bruke set_label()-metoden på artist-objektet (bar i vårt eksempel):

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i in range(len(answers)): bar = plt.bar(positions + width * i, answers[i], width) bar.set_label(labels[i]) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

Plassering av forklaring

Det finnes et annet viktig nøkkelargument for funksjonen legend(), nemlig loc, som angir plasseringen av forklaringen. Standardverdien er best, som "forteller" matplotlib å automatisk velge den beste plasseringen for forklaringen for å unngå overlapping med data.

1234567891011121314151617181920212223242526
import matplotlib.pyplot as plt import numpy as np questions = ['question_1', 'question_2', 'question_3'] positions = np.arange(len(questions)) yes_answers = np.array([500, 240, 726]) no_answers = np.array([432, 618, 101]) answers = np.array([yes_answers, no_answers]) width = 0.3 labels = ['positive answers', 'negative answers'] # Plot bars for each category with labels for i, label in enumerate(labels): bars = plt.bar(positions + width * i, answers[i], width) bars.set_label(label) # Set x-axis ticks and labels at the center of the grouped bars center_positions = positions + width * (len(answers) - 1) / 2 plt.xticks(center_positions, questions) # Display legend above the plot, centered horizontally plt.legend(loc='upper center') plt.show()
copy

I dette eksemplet er forklaringen plassert øverst i midten av diagrammet. Andre gyldige verdier for parameteren loc inkluderer:

  • 'upper right', 'upper left', 'lower left';

  • 'lower right', 'right';

  • 'center left', 'center right', 'lower center', 'center'.

Note
Les mer

Du kan utforske mer i legend() dokumentasjon

Oppgave

Swipe to start coding

  1. Merk de laveste stolpene som 'primary sector' ved å angi riktig nøkkelordargument.
  2. Merk stolpene i midten som 'secondary sector' ved å angi riktig nøkkelordargument.
  3. Merk de øverste stolpene som 'tertiary sector' ved å angi riktig nøkkelordargument.
  4. Plasser forklaringen på høyre side, sentrert vertikalt.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2
Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Vi beklager at noe gikk galt. Hva skjedde?
some-alt