Arbejde med Signaturforklaring
Når et diagram indeholder flere elementer, hjælper en forklaring med at tydeliggøre, hvad hvert element repræsenterer. matplotlib tilbyder flere måder at oprette en forklaring på.
Første mulighed
Alle etiketter kan defineres direkte i plt.legend():
123456789101112131415161718import numpy as np import matplotlib.pyplot as plt 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]) positions = np.arange(len(questions)) width = 0.3 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend(['positive answers', 'negative answers']) plt.show()
Dette opretter en forklaring i øverste venstre hjørne ved at videregive en liste af etiketter til plt.legend().
Andet valg
Etiketter kan også tildeles direkte i plotfunktionerne ved at bruge parameteren label=:
1234567891011121314151617181920import 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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
Her indsamler plt.legend() automatisk etiketter fra de plottede elementer.
Tredje mulighed
Du kan også angive etiketter ved at bruge set_label()-metoden på det returnerede artist-objekt:
12345678910111213141516171819202122import 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 = [yes_answers, no_answers] width = 0.3 labels = ['positive answers', 'negative answers'] for i in range(len(answers)): bar = plt.bar(positions + width*i, answers[i], width) bar.set_label(labels[i]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
Placering af signaturforklaring
Argumentet loc styrer, hvor signaturforklaringen vises. Standardværdien 'best' beder matplotlib automatisk vælge en optimal placering.
12345678910111213141516171819202122import 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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
Gyldige værdier for loc inkluderer:
|
|
|
|---|---|---|
|
|
|
|
|
|
Du kan også bruge muligheden 'best', som automatisk placerer forklaringen der, hvor der er mindst overlap med de viste data. Derudover giver brugen af 'right' samme resultat som 'center right'.
Du kan udforske mere i legend() dokumentationen
Swipe to start coding
- Mærk de laveste søjler som
'primary sector'ved at angive det relevante nøgleord-argument. - Mærk søjlerne i midten som
'secondary sector'ved at angive det relevante nøgleord-argument. - Mærk de øverste søjler som
'tertiary sector'ved at angive det relevante nøgleord-argument. - Placer signaturforklaringen (legend) på højre side, 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
Fantastisk!
Completion rate forbedret til 6.25
Arbejde med Signaturforklaring
Stryg for at vise menuen
Når et diagram indeholder flere elementer, hjælper en forklaring med at tydeliggøre, hvad hvert element repræsenterer. matplotlib tilbyder flere måder at oprette en forklaring på.
Første mulighed
Alle etiketter kan defineres direkte i plt.legend():
123456789101112131415161718import numpy as np import matplotlib.pyplot as plt 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]) positions = np.arange(len(questions)) width = 0.3 for i in range(len(answers)): plt.bar(positions + width * i, answers[i], width) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend(['positive answers', 'negative answers']) plt.show()
Dette opretter en forklaring i øverste venstre hjørne ved at videregive en liste af etiketter til plt.legend().
Andet valg
Etiketter kan også tildeles direkte i plotfunktionerne ved at bruge parameteren label=:
1234567891011121314151617181920import 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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i in range(len(answers)): plt.bar(positions + width*i, answers[i], width, label=labels[i]) plt.xticks(positions + width*(len(answers)-1)/2, questions) plt.legend() plt.show()
Her indsamler plt.legend() automatisk etiketter fra de plottede elementer.
Tredje mulighed
Du kan også angive etiketter ved at bruge set_label()-metoden på det returnerede artist-objekt:
12345678910111213141516171819202122import 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 = [yes_answers, no_answers] width = 0.3 labels = ['positive answers', 'negative answers'] for i in range(len(answers)): bar = plt.bar(positions + width*i, answers[i], width) bar.set_label(labels[i]) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
Placering af signaturforklaring
Argumentet loc styrer, hvor signaturforklaringen vises. Standardværdien 'best' beder matplotlib automatisk vælge en optimal placering.
12345678910111213141516171819202122import 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 = [yes_answers, no_answers] labels = ['positive answers', 'negative answers'] width = 0.3 for i, label in enumerate(labels): bars = plt.bar(positions + width*i, answers[i], width) bars.set_label(label) center_positions = positions + width*(len(answers)-1)/2 plt.xticks(center_positions, questions) plt.legend(loc='upper center') plt.show()
Gyldige værdier for loc inkluderer:
|
|
|
|---|---|---|
|
|
|
|
|
|
Du kan også bruge muligheden 'best', som automatisk placerer forklaringen der, hvor der er mindst overlap med de viste data. Derudover giver brugen af 'right' samme resultat som 'center right'.
Du kan udforske mere i legend() dokumentationen
Swipe to start coding
- Mærk de laveste søjler som
'primary sector'ved at angive det relevante nøgleord-argument. - Mærk søjlerne i midten som
'secondary sector'ved at angive det relevante nøgleord-argument. - Mærk de øverste søjler som
'tertiary sector'ved at angive det relevante nøgleord-argument. - Placer signaturforklaringen (legend) på højre side, centreret lodret.
Løsning
Tak for dine kommentarer!
single