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:
1234567891011121314151617181920212223242526import 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()
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:
1234567891011121314151617181920212223242526272829import 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()
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):
1234567891011121314151617181920212223242526import 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()
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.
1234567891011121314151617181920212223242526import 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()
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'
.
Du kan udforske mere i legend()
dokumentation
Swipe to start coding
- Mærk de laveste søjler som
'primary sector'
ved at angive det relevante nøgleargument. - Mærk søjlerne i midten som
'secondary sector'
ved at angive det relevante nøgleargument. - Mærk de øverste søjler som
'tertiary sector'
ved at angive det relevante nøgleargument. - Placer signaturforklaringen til højre, centreret lodret.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.85
Tilføjelse af Signaturforklaring
Stryg for at vise menuen
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:
1234567891011121314151617181920212223242526import 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()
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:
1234567891011121314151617181920212223242526272829import 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()
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):
1234567891011121314151617181920212223242526import 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()
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.
1234567891011121314151617181920212223242526import 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()
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'
.
Du kan udforske mere i legend()
dokumentation
Swipe to start coding
- Mærk de laveste søjler som
'primary sector'
ved at angive det relevante nøgleargument. - Mærk søjlerne i midten som
'secondary sector'
ved at angive det relevante nøgleargument. - Mærk de øverste søjler som
'tertiary sector'
ved at angive det relevante nøgleargument. - Placer signaturforklaringen til højre, centreret lodret.
Løsning
Tak for dine kommentarer!
Awesome!
Completion rate improved to 3.85single