Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

plot/plotter: NewHist(binPoints) panic when a small negative number is used

Ouverte
#786 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@SashaMIT y travaille déjà.

Depuis le 11/10/2026.

  • #807 par @SashaMIT — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
go

Piste de recherche

Commencez par plotter.NewHist et la fonction binPoints, en vous concentrant sur la condition autour de la ligne 213 et sur l’exemple minimal signalé avec une petite valeur négative. Exécutez l’exemple avec les versions de Go et de Gonum/plot indiquées dans le rapport, puis vérifiez que la même entrée renvoie des bins sans provoquer de panic et que ce comportement est couvert par un test de régression.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

What are you trying to do?

I am trying to analyze the distribution of a series of numbers by plotter.NewHist

What did you do?

Here is a minimal example of the code I used:

func TestA(t *testing.T) {
	data := []float64{203.4, -9.223372036854776e+17, 220.4}
	_, err := plotter.NewHist(plotter.Values(data), 10)
	if err != nil {
		fmt.Println(err)
	}
}

What did you expect to happen?

some bin are returned and there is no error or panic

What actually happened?

funcion binPoints panics with following message
panic: 203.4, xmin=-9.223372036854776e+17, xmax=220.4, w=9.223372036854779e+16, bin=10, n=10

What version of Go and Gonum/plot are you using?

Go 1.23
gonum.org/v1/plot v0.15.0

Also reproduced in
Go 1.20
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b

Annotation

When debugging, I find the bin is set to 10 wrongly. I doubt it is the computing accuracy problem for float64. Maybe if x == xmax (line 213) should be changed to if bin >=n?

Langage dominant
Go
Étoiles
3k
Forks
202
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de gonum/plot

Toutes les issues de gonum/plot

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.