Entrada de dados
Resumo geral do grupo
Média geral
—
Desvio médio
—
Amostras · 5 leituras de Shore A
Preencha as 5 leituras para ver média e desvio
Preencha as 5 leituras para ver média e desvio
Preencha as 5 leituras para ver média e desvio
Preencha as 5 leituras para ver média e desvio
Pré-visualização
Preencha ao menos uma amostra para visualizar o gráfico.
Código Python
import warnings
from google.colab import files
import matplotlib.pyplot as plt
import numpy as np
warnings.filterwarnings("ignore", category=UserWarning)
# Estrutura montada automaticamente pela interface
dados_do_ensaio = [
]
NOME_DO_ARQUIVO = "grafico_dureza_shore.png"
def gerar_grafico_padrao(dados, nome_saida):
all_amostras, all_medias, all_erros = [], [], []
for g in dados:
all_amostras.extend(g["amostras"])
all_medias.extend(g["medias"])
all_erros.extend(g["erros"])
x = np.arange(len(all_amostras))
fig, ax = plt.subplots(figsize=(8.5, 6), dpi=300)
bars = ax.bar(
x,
all_medias,
yerr=all_erros,
capsize=4,
color="white",
edgecolor="black",
hatch="///",
linewidth=1.2,
error_kw={"ecolor": "black", "lw": 1},
)
max_y = max([m + e for m, e in zip(all_medias, all_erros)])
ax.set_ylim(15, max_y + 15)
ax.set_ylabel("Dureza Shore A", fontsize=12, fontweight="bold")
ax.set_xticks(x)
ax.set_xticklabels(all_amostras, rotation=0, fontsize=11, fontweight="bold")
ax.tick_params(
axis="both", which="both", direction="in", top=True, right=True
)
curr_idx = 0
for g in dados:
n_items = len(g["amostras"])
start_idx = curr_idx
end_idx = curr_idx + n_items - 1
curr_idx += n_items
max_grupo = max([m + e for m, e in zip(g["medias"], g["erros"])])
y_top = max_grupo + 7.5
y_sub = y_top - 2.8
# Reta + Texto do Grupo principal
ax.plot(
[start_idx - 0.35, end_idx + 0.35], [y_top, y_top], color="black", lw=1.2
)
ax.text(
(start_idx + end_idx) / 2,
y_top + 0.5,
g["grupo"],
ha="center",
va="bottom",
fontsize=11,
fontweight="bold",
)
# Reta + Texto do Subtítulo (Aditivos/Ativadores/Cargas)
if g.get("subtitulo"):
ax.plot(
[start_idx - 0.35, end_idx + 0.35],
[y_sub, y_sub],
color="black",
lw=1.2,
)
ax.text(
(start_idx + end_idx) / 2,
y_sub + 0.5,
g["subtitulo"],
ha="center",
va="bottom",
fontsize=10,
)
plt.tight_layout()
plt.savefig(nome_saida, dpi=300)
plt.show()
files.download(nome_saida)
gerar_grafico_padrao(dados_do_ensaio, NOME_DO_ARQUIVO)