Calculateur d'histogramme
Obtenez le tableau de fréquences derrière un histogramme : les valeurs 1, 2, 2, 3, 5, 7, 8 et 9 réparties en quatre classes de largeur 2 donnent des effectifs de 3, 1, 1 et 3. Choisissez la largeur ou le nombre de classes. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Nombre d'intervalles
- 4
- N
- 8
- Min
- 1
- Max
- 9
- Image
- 8
Un histogramme regroupe un échantillon numérique en classes contiguës et compte combien d'observations tombent dans chaque intervalle. Ce calculateur d'histogramme accepte une liste de nombres finis, accompagnée d'une largeur de classe positive ou d'un nombre entier positif de classes, puis renvoie chaque plage, son effectif brut et sa fréquence relative.
Ce que l'histogramme renvoie et comment les classes d'égale largeur sont découpées
Un histogramme est une partition d'égale largeur de l'étendue numérique observée, assortie du nombre de points d'échantillon qui tombent dans chaque intervalle. Ce calculateur ne choisit pas une origine « jolie » et n'aligne pas les bords sur des nombres ronds : le premier bord est le minimum de l'échantillon et chaque bord suivant est décalé d'une largeur constante, de sorte que deux personnes avec la même liste et la même largeur ou le même effectif obtiennent toujours le même tableau.
Chaque classe renvoyée indique un indice commençant à un, les bords gauche et droit, un effectif brut, une fréquence relative égale à l'effectif divisé par n, et une chaîne d'intervalle qui utilise un crochet semi-ouvert pour les classes intérieures et un crochet fermé pour la dernière. La réponse répète aussi n, min, max, range, la largeur réellement utilisée, le nombre de classes et la méthode retenue.
Si toutes les observations sont identiques, l'étendue est nulle, le moteur se ramène à une seule classe en cette valeur et n'invente pas de classes voisines vides. Les champs facultatifs sont omis plutôt que mis à null.
Où un tableau de fréquences a sa place dans l'étude, l'analyse et le produit
Les étudiants rencontrent les histogrammes lorsqu'un laboratoire demande un tableau de fréquences de mesures répétées, lorsqu'un manuel montre quatre classes égales sur une courte série, ou lorsqu'ils doivent vérifier qu'une bibliothèque de graphiques n'a pas omis le maximum parce que la dernière classe était restée semi-ouverte. Les enseignants peuvent produire des corrigés qui listent chaque intervalle et son effectif sans se fier à des défauts de tracé opaques.
Les analystes regroupent des temps de réponse, des notes d'examen, des tailles de panier ou des lectures de capteurs pour voir la forme, les trous et les valeurs aberrantes avant de choisir un modèle. Les équipes produit et exploitation transforment le même tableau en une série de tableau de bord que d'autres services peuvent mettre en cache, car la sortie est déterministe pour une liste et une largeur données.
Cette page n'est ni la règle de Scott, ni Freedman–Diaconis, ni un moteur de dessin : ces outils choisissent une largeur ou tracent des barres, tandis que celui-ci consomme une largeur ou un effectif que vous avez déjà et renvoie les classes. Associez-le à un calculateur d'écart type ou de résumé à cinq nombres lorsque vous avez besoin de la dispersion, et à une règle dédiée de largeur lorsque vous devez encore choisir h. Sur cette page, le travail s'exécute entièrement dans votre navigateur.
Cas d’usage
Tableaux de fréquences pour les devoirs
Transformez une série de manuel en classes d'égale largeur, avec effectifs et fréquences relatives, avant de tracer les barres à la main ou de vérifier un graphique.
Latence, notes et capteurs
Classez des temps de réponse, des notes d'examen ou des lectures d'instruments dans un tableau stable à partager, à mettre en cache ou à comparer d'une exécution à l'autre.
Questions fréquentes
Comment ce calculateur d'histogramme choisit-il les bords des classes ?
Le premier bord est le minimum de l'échantillon.
Que se passe-t-il si une valeur n'est pas un nombre ?
Les jetons non numériques, Infinity et NaN ne sont jamais forcés à zéro, et une validation échouée n'est pas facturée.
Pourquoi la dernière classe est-elle fermée des deux côtés ?
Les classes intérieures sont semi-ouvertes [left, right) afin que chaque bord intérieur appartienne à une seule classe. La dernière est [left, right] pour que le maximum de l'échantillon soit compté une fois au lieu de tomber hors du tableau.
Que se passe-t-il si j'indique à la fois la largeur et le nombre de classes ?
La largeur l'emporte. Le calculateur utilise la largeur indiquée et détermine combien de classes il faut pour couvrir l'étendue de vos valeurs, de la plus petite à la plus grande.
Que se passe-t-il si toutes les valeurs sont identiques ?
Il n'y a aucune étendue à découper : vous obtenez une seule classe sur cette valeur, avec toutes les observations. Le calculateur n'invente pas de classes vides autour d'elle.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/histogram \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"data":[1,2,2,3,5,7,8,9],"bin_width":2}'const res = await fetch("https://api.kit.forhosting.com/stat/histogram", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"data": [
1,
2,
2,
3,
5,
7,
8,
9
],
"bin_width": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/histogram",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"data": [
1,
2,
2,
3,
5,
7,
8,
9
],
"bin_width": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/histogram", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"data":[1,2,2,3,5,7,8,9],"bin_width":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"data":[1,2,2,3,5,7,8,9],"bin_width":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/histogram", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"data": [
1,
2,
2,
3,
5,
7,
8,
9
],
"bin_width": 2
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.histogram",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_n | 10000 |
max_abs | 1000000000000000 |
max_bins | 500 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Si une entrée n'est pas un nombre fini, la tâche échoue avec invalid_input, afin qu'une étiquette isolée ne devienne pas un zéro silencieux. Le même algorithme pur s'exécute gratuitement dans le navigateur et, via l'API, à $0.002 par appel réussi.
Ce que l'histogramme renvoie et comment les classes d'égale largeur sont découpées
Lorsque vous fournissez bin_count comme entier positif k, la largeur est l'étendue observée divisée par k, le dernier bord est exactement le maximum de l'échantillon, et la dernière classe est fermée à droite afin que la plus grande observation soit comptée une seule fois au lieu de tomber hors de l'extrémité. Lorsque vous fournissez un bin_width positif, le moteur prend autant de classes que le plafond de l'étendue divisée par cette largeur, au moins une, et le dernier bord peut dépasser légèrement le maximum pour couvrir toutes les valeurs. Il n'y a ni jitter aléatoire, ni graine de date, ni étape réseau : soit l'arithmétique se termine dans les limites publiées de longueur, de magnitude et de nombre de classes, soit l'appel est rejeté avec invalid_input.
Contrat d'entrée, rejet du non numérique et stabilité de l'affectation
Chaque jeton doit être un décimal fini, avec un signe optionnel et un exposant scientifique optionnel ; les jetons vides, les booléens, les objets, Infinity et NaN échouent. Si un élément est non numérique, le message nomme l'indice, par exemple data[2], afin qu'une étiquette isolée dans une colonne collée reste visible au lieu de devenir un zéro silencieux. Rien n'est conservé après le retour de la réponse. Le champ obligatoire est data, un tableau de nombres finis, avec les alias values, numbers, x et series afin que carnets et formulaires réutilisent le même contrat. Une chaîne de nombres séparés par des virgules, des points-virgules ou des espaces est également acceptée lorsqu'une zone de texte ne peut pas poster un tableau JSON. Vous devez aussi envoyer bin_width, un nombre fini positif, ou bin_count, un entier positif au plus égal au maximum publié. Si les deux sont présents, bin_width l'emporte et bin_count est recalculé à partir de l'étendue. L'absence de data, une liste vide, une largeur non positive, un effectif non entier ou non positif, une liste plus longue que le n maximal, une valeur hors du plafond de magnitude, ou une largeur si petite que le nombre implicite de classes dépasserait le maximum publié, lèvent invalid_input et ne sont pas facturés.
Où un tableau de fréquences a sa place dans l'étude, l'analyse et le produit
Les développeurs figent le JSON dans l'intégration continue afin qu'un changement futur des règles d'affectation ne réécrive pas les instantanés en silence. Via l'API, chaque consultation réussie coûte $0.002 ; une validation échouée n'est pas facturée et les nombres sont écartés après la réponse.
Cas d'intégration
Fixtures déterministes de graphiques et de variables
Figez plages et fréquences de classes dans les tests afin qu'un tableau de bord ou une covariable discrétisée ne dérivent pas lorsque les défauts du graphique changent.
Questions techniques
Quelle est la différence entre bin_width et bin_count ?
bin_width est la longueur de chaque classe ; le moteur en déduit combien de classes couvrent l'étendue. bin_count est le nombre de classes souhaité ; le moteur en déduit la largeur. Si les deux sont envoyés, bin_width l'emporte.
Combien coûte le calculateur d'histogramme ?
L'outil du navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.