2
respostas

Histograma com função de densidade. Como adicionar limite superior e inferior (LSL e USL)

Curso: Estatística com Python parte 1: Frequências e Medidas Eu quero adicionar limite inferior e superior (LSL e USL) no meu histograma com função de densidade. Referencia: https://support.minitab.com/pt-br/minitab/18/help-and-how-to/quality-and-process-improvement/capability-analysis/how-to/capability-sixpack/normal-capability-sixpack/interpret-the-results/all-statistics-and-graphs/specifications/

2 respostas

Aguardando resposta

Boas Rodrigo, tudo bem? Espero que sim!

Inicialmente peço desculpas pela demora em responder.

Considerando as ferramentas que o curso mostrou até agora, vou tentar me ater a elas na resposta.

Antes de tudo, temos que importar as bibliotecas que vamos usar

import seaborn as sns
import numpy as np 
import matplotlib.pyplot as plt

Agora, vamos gerar alguns números aleatórios para trabalhar com essa distribuição

# Gerando 1000 números aleatórios com uma seed fixa

np.random.seed(seed=3)
numeros = np.random.normal(1,100,1000)

Nesse caso, se quiser ter o mesmo gráfico que eu obtive, é importante usar a mesma seed.

A partir dessa distribuição podemos gerar o gráfico de frequências com os números gerados:

# gerando o gráfico de frequencias com os números gerados
ax = sns.distplot(numeros, kde=True)
plt.rcParams["figure.figsize"] = [12, 6.]

Gráfico de distribuição de frequências simples

gráfico de distribuição de frequências simples

Vou mostrar duas formas de adicionar as linhas que marcam o limite inferior de especificação (LSL) e o limite superior de especificação (ULS).

A primeira é definindo arbitrariamente valores e a segunda é a partir de uma estatística relacionada com a distribuição. Vamos ao código:

# inserindo as linhas verticais arbitráriamente
plt.axvline(x=-200, color='red', ls='--', label='LSL', ymin = 0, ymax = 0.85 )
plt.axvline(x=200, color='green', ls='--', label='USL', ymin = 0, ymax = 0.85 )

# Habilitar a legenda (baseada nas labels) e mostrar o gráfico
ax.legend()
plt.show()

gráfico de distribuição de frequências com linhas verticais inseridas arbitrariamente

gráfico de distribuição de frequências com linhas verticais inseridas arbitrariamente

A função responsável por inserir as linhas é a plt.axvline(). Ela possui diversos parâmetros, dos quais destaco:

  • x - qual ponto do eixo x a linha será inserida;
  • ymin e ymax - definem o início e fim da linha no eixo y;
  • color - define a cor da linha
  • label - define a legenda da linha
  • ls - tipo da linha

Para mais informações, visitar a documentação, que infelizmente só está disponível em inglês.

A segunda forma é a definindo as linhas a partir de alguma função, no exemplo abaixo usarei os quartis.

# gerando o gráfico de frequencias com os números gerados
ax = sns.distplot(numeros, kde=True)

# inserindo as a partir dos quartis

q1 = np.percentile(numeros, 25)
q3 = np.percentile(numeros, 75)
plt.axvline(q1, color='red', ls='--', label='LSL', ymin = 0, ymax = 0.95 )
plt.axvline(q3, color='green', ls='--', label='USL', ymin = 0, ymax = 0.95 )
ax.legend()
plt.show()

gráfico de distribuição de frequências com linhas verticais inseridas a partir de uma função, no caso os primeiro e terceiro quartis.

gráfico de distribuição de frequências com linhas verticais inseridas a partir de uma função, no caso os primeiro e terceiro quartis.

Espero ter ajudado e bons estudos!