Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

127
Visualizações
¿Cómo hago un gráfico de una línea individual para cada grupo dentro de un objeto de mapa de Javascript usando D3.js?

Tengo un conjunto de datos llamado graphData con tres valores, longitud de wavelength , magnitude y name .

 let array = [ {name: "dataset 1", wavelength: 2, magnitude: 20} {name: "dataset 1", wavelength: 3, magnitude: 22} {name: "dataset 1", wavelength: 4, magnitude: 19} {name: "dataset 2", wavelength: 2, magnitude: 14} //and so on... ]

He agrupado el conjunto de datos usando d3.group() usando el valor del name como clave

 let sortedGraphData = d3.group(graphData, d => d.fullId)

Que debería devolver una estructura de mapa como esta:

 {key: "dataset 1" values: [ {wavelength: 2, magnitude: 20} {wavelength: 3, magnitude: 22} {wavelength: 4, magnitude: 19} ]} {key: "dataset 2" values: [ {wavelength: 2, magnitude: 14} ///and so on... ]}

Pero cuando trato de dibujar esos datos en mi gráfico con

 let valueline = d3.line() .x(function(d){return x(+d.wavelength)}) .y(function(d){return y(+d.magnitude)}); graph.append("path") .data(sortedSessionGraphData) .attr("class", "line") .attr("d", valueline);

Recibo el siguiente error: Error: <path> attribute d: Expected number, "MNaN,NaNLNaN,NaN".

Me imagino que d3.line().x(function(d){return +d.wavelength}) no devuelve una matriz de pares de datos de longitud de onda y magnitud como yo quiero, pero no estoy seguro de cómo exponer los datos correctos dentro del mapa.

¿Cómo navega a través de un mapa y grafica nuevas líneas para cada uno de los objetos contenidos dentro de un mapa?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Dado que la salida de d3.group es un mapa de javascript, debe convertirse en una matriz de tuplas [key,value] para que sea iterable:

 let sortedGraphData = Array.from(d3.group(graphData, d => d.fullId))

Con este cambio, sortedGraphData ahora tiene la siguiente estructura:

 [ ["dataset 1", [{wavelength: 2, magnitude: 20}, ...] ], ["dataset 2", [{wavelength: 2, magnitude: 14}, ...] ], ]

El uso de sortedGraphData con append creará una ruta para cada conjunto de datos, y el atributo d de la ruta SVG se puede calcular pasando los valores a la función del generador de líneas. Dado que la matriz de valores es el segundo elemento de cada conjunto de datos, se puede acceder a ella con el índice 1:

.attr("d", d => valueline(d[1])) .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda