Trabajando con la 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
Es posible 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 pasando 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:
|
|
|
|---|---|---|
|
|
|
|
|
|
También se puede utilizar la opción 'best', que coloca automáticamente la leyenda en la ubicación con menor superposición con los datos representados. Además, usar 'right' produce el mismo resultado que 'center right'.
Puede 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 6.25
Trabajando con la 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
Es posible 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 pasando 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:
|
|
|
|---|---|---|
|
|
|
|
|
|
También se puede utilizar la opción 'best', que coloca automáticamente la leyenda en la ubicación con menor superposición con los datos representados. Además, usar 'right' produce el mismo resultado que 'center right'.
Puede 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