Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
No se puede obtener el histograma para mostrar contenedores separados con líneas verticales

Problema extraño molesto y aún no he podido encontrar una solución en este sitio (aunque ha aparecido la pregunta)

Estoy tratando de hacer un histograma donde los contenedores tienen el 'estilo de barra' donde las líneas verticales separan cada contenedor, pero no importa lo que cambie el constructor de histtype para obtener un histograma lleno de pasos.

Aquí está mi código. Tenga en cuenta que estoy usando jupyter notebook instalado a través de anaconda con python versión 2.7.6

 import numpy as np import matplotlib.pyplot as plt x = np.random.rand((100)) bins = np.linspace(0, 2, 40) plt.title('Relative Amplitude',fontsize=30) plt.xlabel('Random Histogram') plt.ylabel('Frequency',fontsize=30) plt.hist(x, bins, alpha=0.5, histtype='bar') plt.legend(loc='upper right',fontsize=30) plt.xticks(fontsize = 20) plt.yticks(fontsize = 20) plt.show()

Eso es todo y obtengo un diagrama lleno de pasos sin líneas verticales que separen las barras. Lo que es molesto es que no tuve este problema hace un tiempo, algo claramente ha cambiado y no sé qué. También probé histype = 'barstacked'. Gracias amablemente por su ayuda

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Usando tu ejemplo:

 import numpy as np import matplotlib.pyplot as plt x = np.random.rand((100)) bins = np.linspace(0, 2, 40) plt.title('Relative Amplitude',fontsize=30) plt.xlabel('Random Histogram') plt.ylabel('Frequency',fontsize=30) plt.hist(x, bins, alpha=0.5, histtype='bar', ec='black') plt.legend(loc='upper right',fontsize=30) plt.xticks(fontsize = 20) plt.yticks(fontsize = 20) plt.show()

Lo que produce la siguiente imagen:

ingrese la descripción de la imagen aquí

La diferencia clave es el uso del argumento de palabra clave ec . Esta es la abreviatura de "color de borde". En la documentación de plt.hist dice que, además de todos los argumentos de palabras clave enumerados, plt.hist también toma argumentos de palabras clave para el inicializador de Patch . edgecolor es uno de esos argumentos de palabras clave. Es por eso que no aparece explícitamente en la documentación de plt.hist . Todas las barras en el gráfico son un objeto Patch individual, por lo que está diciendo que desea que todas las barras se dibujen con un contorno negro (o color de borde en la jerga de edgecolor ).

over 4 years ago · Santiago Trujillo Denunciar

0

Funciona para mí si le doy diferentes colores al argumento edgecolor y al argumento color . Por ejemplo:

 import numpy as np import matplotlib.pyplot as plt x = np.random.rand((100)) bins = np.linspace(0, 2, 40) plt.title('Relative Amplitude',fontsize=30) plt.xlabel('Random Histogram') plt.ylabel('Frequency',fontsize=30) plt.hist(x, bins, alpha=0.5,edgecolor='black',color='steelblue', histtype='bar') plt.legend(loc='upper right',fontsize=30) plt.xticks(fontsize = 20) plt.yticks(fontsize = 20) plt.show()
over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar el parámetro rwidth en plt.hist . Tenga en cuenta que estoy usando matplotlib versión '3.4.2'.

rwidth: flotante o Ninguno, predeterminado: Ninguno El ancho relativo de las barras como una fracción del ancho del contenedor. Si no hay, calcula automáticamente el ancho.

 import numpy as np import matplotlib.pyplot as plt x = np.random.rand((100)) bins = np.linspace(0, 2, 40) plt.title('Relative Amplitude',fontsize=30) plt.xlabel('Random Histogram', fontsize=30) plt.ylabel('Frequency',fontsize=30) plt.hist(x, bins, rwidth=0.6, alpha=0.5, histtype='bar')# rwidth specify the width of the bars # rwidth is an number between 0 and 1 plt.xticks(fontsize=15) plt.yticks(fontsize=15) plt.xlim(0,1) plt.show()

Qué producto esta imagen (haga clic aquí)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda