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
Genial!
Completion tasa mejorada a 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