Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tilføjelse af Signaturforklaring | Tilpasning af Plots
Ultimativ Visualisering med Python

Stryg for at vise menuen

book
Tilføjelse af Signaturforklaring

Når flere elementer er til stede i et diagram, er det ofte nyttigt at mærke dem for at skabe klarhed. Forklaringen (legend) tjener dette formål ved at give et kompakt område, der forklarer de forskellige komponenter i diagrammet.

Følgende er tre almindelige måder at oprette en forklaring i matplotlib på.

Første mulighed

Overvej følgende eksempel for at tydeliggøre konceptet:

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

I øverste venstre hjørne forklarer en signatur de forskellige søjler på diagrammet. Denne signatur oprettes ved hjælp af funktionen plt.legend(), hvor en liste af etiketter gives som det første argument—ofte kaldet labels.

Andet valg

En anden mulighed indebærer at angive parameteren label i hvert kald af plotfunktionen, såsom bar i vores 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 der skal tilføjes til signaturforklaringen og deres etiketter; alle elementer med den angivne label-parameter inkluderes.

Tredje mulighed

Faktisk findes der endnu en mulighed ved at bruge set_label()-metoden på kunstobjektet (bar i vores 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

Placering af signaturforklaring

Der er et andet vigtigt nøgleargument i funktionen legend(), loc, som angiver placeringen af signaturforklaringen. Standardværdien er best, hvilket "fortæller" matplotlib automatisk at vælge den bedste placering for signaturforklaringen for at undgå overlap 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 eksempel er signaturforklaringen placeret i øverste midte af diagrammet. Andre gyldige værdier for loc-parameteren inkluderer:

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

  • 'lower right', 'right';

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

Note
Læs Mere

Du kan udforske mere i legend() dokumentation

Opgave

Swipe to start coding

  1. Mærk de laveste søjler som 'primary sector' ved at angive det relevante nøgleargument.
  2. Mærk søjlerne i midten som 'secondary sector' ved at angive det relevante nøgleargument.
  3. Mærk de øverste søjler som 'tertiary sector' ved at angive det relevante nøgleargument.
  4. Placer signaturforklaringen til højre, centreret lodret.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2

Spørg AI

expand
ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

book
Tilføjelse af Signaturforklaring

Når flere elementer er til stede i et diagram, er det ofte nyttigt at mærke dem for at skabe klarhed. Forklaringen (legend) tjener dette formål ved at give et kompakt område, der forklarer de forskellige komponenter i diagrammet.

Følgende er tre almindelige måder at oprette en forklaring i matplotlib på.

Første mulighed

Overvej følgende eksempel for at tydeliggøre konceptet:

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

I øverste venstre hjørne forklarer en signatur de forskellige søjler på diagrammet. Denne signatur oprettes ved hjælp af funktionen plt.legend(), hvor en liste af etiketter gives som det første argument—ofte kaldet labels.

Andet valg

En anden mulighed indebærer at angive parameteren label i hvert kald af plotfunktionen, såsom bar i vores 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 der skal tilføjes til signaturforklaringen og deres etiketter; alle elementer med den angivne label-parameter inkluderes.

Tredje mulighed

Faktisk findes der endnu en mulighed ved at bruge set_label()-metoden på kunstobjektet (bar i vores 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

Placering af signaturforklaring

Der er et andet vigtigt nøgleargument i funktionen legend(), loc, som angiver placeringen af signaturforklaringen. Standardværdien er best, hvilket "fortæller" matplotlib automatisk at vælge den bedste placering for signaturforklaringen for at undgå overlap 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 eksempel er signaturforklaringen placeret i øverste midte af diagrammet. Andre gyldige værdier for loc-parameteren inkluderer:

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

  • 'lower right', 'right';

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

Note
Læs Mere

Du kan udforske mere i legend() dokumentation

Opgave

Swipe to start coding

  1. Mærk de laveste søjler som 'primary sector' ved at angive det relevante nøgleargument.
  2. Mærk søjlerne i midten som 'secondary sector' ved at angive det relevante nøgleargument.
  3. Mærk de øverste søjler som 'tertiary sector' ved at angive det relevante nøgleargument.
  4. Placer signaturforklaringen til højre, centreret lodret.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2
Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Vi beklager, at noget gik galt. Hvad skete der?
some-alt