Aggiunta della Legenda
Quando un grafico contiene più elementi, aggiungere una legenda aiuta a chiarire cosa rappresenta ciascun elemento. matplotlib offre diversi modi per creare una legenda.
Prima opzione
È possibile definire tutte le etichette direttamente all'interno di 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()
Questo crea una legenda nell'angolo in alto a sinistra passando una lista di etichette a plt.legend().
Seconda opzione
È anche possibile assegnare le etichette direttamente all'interno delle funzioni di tracciamento utilizzando il parametro 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()
Qui, plt.legend() raccoglie automaticamente le etichette dagli elementi tracciati.
Terza opzione
È possibile anche impostare le etichette utilizzando il metodo set_label() dell'artista restituito:
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()
Posizione della legenda
L'argomento loc controlla dove appare la legenda. Il valore predefinito 'best' consente a matplotlib di scegliere automaticamente una posizione ottimale.
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()
I valori validi per loc includono:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Puoi approfondire ulteriormente nella documentazione di legend()
Swipe to start coding
- Etichettare le barre più basse come
'primary sector'specificando l'argomento keyword appropriato. - Etichettare le barre centrali come
'secondary sector'specificando l'argomento keyword appropriato. - Etichettare le barre superiori come
'tertiary sector'specificando l'argomento keyword appropriato. - Posizionare la legenda sul lato destro, centrata verticalmente.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain the difference between these three legend options?
How do I customize the legend appearance further?
What happens if I don't specify the `loc` parameter in `plt.legend()`?
Awesome!
Completion rate improved to 3.85
Aggiunta della Legenda
Scorri per mostrare il menu
Quando un grafico contiene più elementi, aggiungere una legenda aiuta a chiarire cosa rappresenta ciascun elemento. matplotlib offre diversi modi per creare una legenda.
Prima opzione
È possibile definire tutte le etichette direttamente all'interno di 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()
Questo crea una legenda nell'angolo in alto a sinistra passando una lista di etichette a plt.legend().
Seconda opzione
È anche possibile assegnare le etichette direttamente all'interno delle funzioni di tracciamento utilizzando il parametro 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()
Qui, plt.legend() raccoglie automaticamente le etichette dagli elementi tracciati.
Terza opzione
È possibile anche impostare le etichette utilizzando il metodo set_label() dell'artista restituito:
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()
Posizione della legenda
L'argomento loc controlla dove appare la legenda. Il valore predefinito 'best' consente a matplotlib di scegliere automaticamente una posizione ottimale.
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()
I valori validi per loc includono:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Puoi approfondire ulteriormente nella documentazione di legend()
Swipe to start coding
- Etichettare le barre più basse come
'primary sector'specificando l'argomento keyword appropriato. - Etichettare le barre centrali come
'secondary sector'specificando l'argomento keyword appropriato. - Etichettare le barre superiori come
'tertiary sector'specificando l'argomento keyword appropriato. - Posizionare la legenda sul lato destro, centrata verticalmente.
Soluzione
Grazie per i tuoi commenti!
single