Curso matplotlib - Gráfico de barras verticais (barras de erro)

5 minute read


É possível adicionar barras de erro para cada barra, o que é feito passando o parâmetro yerr (para barras de erro no eixo y) ou xerr (para barras de erros no eixo x), de forma muito semelhante ao que vimos anteriormente.

Estes dois parâmetros podem ser alterados de duas formas. A primeira, e geralmente a mais utilizada, é passando uma constante (int ou float) ou uma sequência de números.

Ao utilizar uma constante para todas as barras, um mesmo valor será utilizado para as barras de erro de todas as barras.

espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=0.5)
plt.show()

Figura 1 - Gráfico de barras verticais com barras de erro de mesmo tamanho.

gráfico de barras verticais desenhado com o matplotlib.


Ao utilizar uma sequência de valores (como uma list por exemplo), cada valor dessa sequencia será utilizada para as cada barra de erro (o tamanho dessa sequência deve ser igual ao tamanho da sequência passada para o parâmetro x).

std_y = [0.5, 0.6, 0.1, 0.2, 1]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=std_y)
plt.show()

Figura 2 - Gráfico de barras verticais com barras de erro de tamanho variado.

gráfico de barras verticais desenhado com o matplotlib.


Observe que o tamanho da barra de erro adicionado foi exatamente o tamanho passado, tanto para cima, como para baixo do topo de cada barra. Esta é a forma mais comum de adicionar estas barras, pois na maioria das vezes elas representam o desvio padrão ou o intervalo de confiança de uma observação/medida.

A outra forma que temos é especificar qual o tamanho para cima e para baixo no topo da barra. Isto é feito passando uma sequência de duas dimensões para o yerr, que deve conter os valores para cada barra.

Por exemplo, ao passar yerr = [[1, 1, 1, 1, 1], [2, 2, 2, 2, 2]], obtemos:

espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2]])
plt.show()

Figura 3 - Gráfico de barras verticais com barras de erro com limites diferentes.

gráfico de barras verticais desenhado com o **matplotlib**.


Repare que a barra acima do topo é duas vezes maior do que a barra abaixo do topo. Dessa forma, é possível personalizar as barras de erros de forma bem simples. Também é possível que estes valores variem entre cada barra. Por exemplo:

std_y = [[0.4, 0.4, 0.4, 2, 0.5],[0.1, 0.2, 0.3, 0.4, 0.1]]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=std_y)
plt.show()

Figura 4 - Gráfico de barras verticais com barras de erro com limites variados.

gráfico de barras verticais desenhado com o matplotlib.


É possível utilizar a mesma lógica para barras de erro no eixo x, utilizando o parâmetro xerr ao invés de yerrr, com a diferença de que é necessário especificar todos os valores. Alguns exemplos:

std_x = [0.1, 0.2, 0.3, 0.4, 1]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, xerr=std_x)
plt.show()

Figura 5 - Gráfico de barras verticais com barras de erro no sentido do eixo x.

gráfico de barras verticais desenhado com o matplotlib.


std_x = [[0.1, 0.2, 0.3, 0.4, 1],[0.4, 0.4, 0.4, 0.4, .4]]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, xerr=std_x)
plt.show()

Figura 6 - Gráfico de barras verticais com barras de erro no sentido do eixo x.

gráfico de barras verticais desenhado com o matplotlib.


Cor da barra de erro

Para alterar a cor da barra de erro, basta passar uma str ou uma sequência de str com o(s) nome(s) das cores desejadas através do parâmetro ecolor.

Exemplo:

std_y = [0.5, 0.6, 0.1, 0.2, 1]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=std_y, ecolor='m')
plt.show()

Figura 7 - Gráfico de barras verticais com barras de erro na cor magenta.

gráfico de barras verticais desenhado com o matplotlib.


cor_barra_erro = ['g', 'm', 'b', 'k', 'y']
std_y = [0.5, 0.6, 0.1, 0.2, 1]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=std_y, ecolor=cor_barra_erro)
plt.show()

Figura 8 - Gráfico de barras verticais com barras de erro com cores variadas.

gráfico de barras verticais desenhado com o matplotlib.


Cap

É possível adicionar uma barrinha nas extremidades da barra de erro, o que é muito comum de ser observado neste tipo apresentação do erro. Para adicionar esta barra, basta passar um número (float) através do parâmetro capsize.

Exemplo:

std_y = [0.5, 0.6, 0.1, 0.2, 1]
espessuras = [0.5, .7, 0.8, 0.3, -0.2]
espessura_borda = [1, 2, 3, 4, 5]
cores = ['r', 'g', 'k', 'w', 'y']
cores_borda = ['g', 'm', 'k', 'y', 'b']
inicio = [0, 1, 2, 3, 4,]
plt.figure(figsize=(8,6))
plt.bar(frutas, precos, width=espessuras, align='edge', bottom=inicio, color=cores, edgecolor=cores_borda,
       linewidth=espessura_borda, yerr=std_y, ecolor='m', capsize=5)
plt.show()


Qual a diferença entre os parâmetros xerr e yerr?

Não tem diferença

O parâmetro xerr insere barras de erro na vertical, enquanto que o parâmetro yerr insere barras de erro na horizontal.

O parâmetro xerr insere barras de erro na vertical, enquanto que o parâmetro yerr insere barras de erro na horizontal.

O parâmetro xerr desenha um gráfico de barras verticais, enquanto que o parâmetro yerr desenha um gráfico de barras na horizontal.


Anterior Próximo

Updated: