Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

plotter: Is current "uniformness" of heatmap coloring intentional?

Abierto
#777 5 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
go

Línea de trabajo

Comienza con los comentarios y el código sobre el escalado de colores del mapa de calor en plotter/heat.go, especialmente con las líneas mencionadas sobre el escalado de la paleta y la selección del color de las celdas. Ejecuta el reproductor proporcionado TestHeatMap con la configuración gonum.org/v1/plot v0.14.0 y compara la imagen resultante con la expectativa indicada. Se considera terminado cuando la distribución de colores prevista está resuelta y el comportamiento está cubierto o aclarado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

What are you trying to do?

Drawing heatmap.

What did you do?
func TestHeatMap(t *testing.T) {
	m := offsetUnitGrid{
		XOffset: -2,
		YOffset: -1,
		Data: mat.NewDense(3, 4, []float64{
			1, 2, 3, 4,
			5, 6, 7, 8,
			9, 10, 11, 12,
		}),
	}
	pal := myPalette{}
	h := plotter.NewHeatMap(m, pal)

	p := plot.New()
	p.Add(h)

	p.X.Padding = 0
	p.Y.Padding = 0

	img := vgimg.New(250, 175)
	dc := draw.New(img)
	p.Draw(dc)
	w, err := os.Create("golden_files/heatMap.png")
	if err != nil {
		log.Panic(err)
	}
	png := vgimg.PngCanvas{Canvas: img}
	if _, err = png.WriteTo(w); err != nil {
		t.Fatal(err)
	}
}

type myPalette struct{}

func (myPalette) Colors() []color.Color {
	return []color.Color{
		color.RGBA{R: 255, A: 255},
		color.RGBA{G: 255, A: 255},
		color.RGBA{B: 255, A: 255},
		color.RGBA{R: 255, G: 255, A: 255},
	}
}

// offsetUnitGrid is copied from https://github.com/gonum/plot/blob/b4fdc267610216647ec69681d47e431cf5bbed23/plotter/heat_test.go#L21
What did you expect to happen?

Each color is used "uniformly". I consider 3 cells for each colors (3 * 4 = 12) is "unform".
Following code comments says palette is scaled uniformly across the data range.
https://github.com/gonum/plot/blob/b4fdc267610216647ec69681d47e431cf5bbed23/plotter/heat.go#L157

What actually happened?

2 cells for red, 4 cells for green, 4 cells for blue, 2 cells for yellow. This doesn't look uniform to me.
heatMap

Probably first color and last color have half chance to be used compared the other colors.
In my thought, following should be ps := float64(len(pal)) / (h.Max - h.Min)
https://github.com/gonum/plot/blob/b4fdc267610216647ec69681d47e431cf5bbed23/plotter/heat.go#L157-L158
and following shouldbe col = pal[int((v-h.Min)*ps)] to get uniform.
https://github.com/gonum/plot/blob/b4fdc267610216647ec69681d47e431cf5bbed23/plotter/heat.go#L222-L224

What version of Go and Gonum/plot are you using?
go version go1.22.0 darwin/arm64
gonum.org/v1/plot v0.14.0
Does this issue reproduce with the current master?

Not experimented yet. Maybe yes.

Lenguaje dominante
Go
Estrellas
3k
Forks
202
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de gonum/plot

Todos los issues de gonum/plot

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.