Agregar Leyenda
Cuando un gráfico contiene múltiples elementos, agregar una leyenda ayuda a clarificar qué representa cada elemento. matplotlib ofrece varias formas de crear una leyenda.
Primera opción
Se pueden definir todas las etiquetas directamente 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()
Esto crea una leyenda en la esquina superior izquierda al pasar una lista de etiquetas a plt.legend().
Segunda opción
También es posible asignar etiquetas directamente dentro de las funciones de graficado utilizando el 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()
Aquí, plt.legend() recopila automáticamente las etiquetas de los elementos graficados.
Tercera opción
También es posible establecer etiquetas utilizando el método set_label() del 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()
Ubicación de la leyenda
El argumento loc controla dónde aparece la leyenda. El valor predeterminado 'best' indica a matplotlib que elija automáticamente una ubicación óptima.
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()
Los valores válidos para loc incluyen:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Puedes explorar más en legend() documentación
Swipe to start coding
- Etiquetar las barras más bajas como
'primary sector'especificando el argumento de palabra clave correspondiente. - Etiquetar las barras del medio como
'secondary sector'especificando el argumento de palabra clave correspondiente. - Etiquetar las barras superiores como
'tertiary sector'especificando el argumento de palabra clave correspondiente. - Colocar la leyenda en el lado derecho, centrada verticalmente.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.85
Agregar Leyenda
Desliza para mostrar el menú
Cuando un gráfico contiene múltiples elementos, agregar una leyenda ayuda a clarificar qué representa cada elemento. matplotlib ofrece varias formas de crear una leyenda.
Primera opción
Se pueden definir todas las etiquetas directamente 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()
Esto crea una leyenda en la esquina superior izquierda al pasar una lista de etiquetas a plt.legend().
Segunda opción
También es posible asignar etiquetas directamente dentro de las funciones de graficado utilizando el 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()
Aquí, plt.legend() recopila automáticamente las etiquetas de los elementos graficados.
Tercera opción
También es posible establecer etiquetas utilizando el método set_label() del 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()
Ubicación de la leyenda
El argumento loc controla dónde aparece la leyenda. El valor predeterminado 'best' indica a matplotlib que elija automáticamente una ubicación óptima.
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()
Los valores válidos para loc incluyen:
'upper right', 'upper left', 'lower left', 'lower right', 'right', 'center left', 'center right', 'lower center', 'center'.
Puedes explorar más en legend() documentación
Swipe to start coding
- Etiquetar las barras más bajas como
'primary sector'especificando el argumento de palabra clave correspondiente. - Etiquetar las barras del medio como
'secondary sector'especificando el argumento de palabra clave correspondiente. - Etiquetar las barras superiores como
'tertiary sector'especificando el argumento de palabra clave correspondiente. - Colocar la leyenda en el lado derecho, centrada verticalmente.
Solución
¡Gracias por tus comentarios!
single