Adicionando Legenda
Quando um gráfico contém vários elementos, adicionar uma legenda ajuda a esclarecer o que cada elemento representa. O matplotlib oferece diversas maneiras de criar uma legenda.
Primeira Opção
É possível definir todos os rótulos diretamente dentro de 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()
Isso cria uma legenda no canto superior esquerdo ao passar uma lista de rótulos para plt.legend().
Segunda Opção
Também é possível atribuir rótulos diretamente nas funções de plotagem utilizando o parâmetro 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()
Aqui, plt.legend() reúne automaticamente os rótulos dos elementos plotados.
Terceira Opção
Também é possível definir rótulos utilizando o método set_label() do artista retornado:
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()
Localização da Legenda
O argumento loc controla onde a legenda aparece. O valor padrão 'best' instrui o matplotlib a escolher automaticamente uma localização ideal.
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()
Valores válidos para loc incluem:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Você pode explorar mais em legend() documentação
Swipe to start coding
- Rotule as barras mais baixas como
'primary sector', especificando o argumento de palavra-chave apropriado. - Rotule as barras do meio como
'secondary sector', especificando o argumento de palavra-chave apropriado. - Rotule as barras superiores como
'tertiary sector', especificando o argumento de palavra-chave apropriado. - Posicione a legenda no lado direito, centralizada verticalmente.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Adicionando Legenda
Deslize para mostrar o menu
Quando um gráfico contém vários elementos, adicionar uma legenda ajuda a esclarecer o que cada elemento representa. O matplotlib oferece diversas maneiras de criar uma legenda.
Primeira Opção
É possível definir todos os rótulos diretamente dentro de 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()
Isso cria uma legenda no canto superior esquerdo ao passar uma lista de rótulos para plt.legend().
Segunda Opção
Também é possível atribuir rótulos diretamente nas funções de plotagem utilizando o parâmetro 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()
Aqui, plt.legend() reúne automaticamente os rótulos dos elementos plotados.
Terceira Opção
Também é possível definir rótulos utilizando o método set_label() do artista retornado:
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()
Localização da Legenda
O argumento loc controla onde a legenda aparece. O valor padrão 'best' instrui o matplotlib a escolher automaticamente uma localização ideal.
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()
Valores válidos para loc incluem:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Você pode explorar mais em legend() documentação
Swipe to start coding
- Rotule as barras mais baixas como
'primary sector', especificando o argumento de palavra-chave apropriado. - Rotule as barras do meio como
'secondary sector', especificando o argumento de palavra-chave apropriado. - Rotule as barras superiores como
'tertiary sector', especificando o argumento de palavra-chave apropriado. - Posicione a legenda no lado direito, centralizada verticalmente.
Solução
Obrigado pelo seu feedback!
single