Ligne devant les points dans d3.js

Oct 02 2020

J'ai créé un histogramme / graphique linéaire dans d3.js v5 et j'ai un problème que je n'arrive pas à comprendre. La ligne passe au-dessus des points, ce qui perturbe l'info-bulle et n'a pas l'air très joli.

Ma question est la suivante: comment faire pour que les points soient en haut de la ligne.

Voici l'exemple de violon complet .

Exemple de code

    // line chart dots
bar.append('circle')
  .attr('class', 'dot')
  .attr('cx', function (d, i) {
    return xScale(d[0]) + xScale.bandwidth() / 2; // / 2 links dots over center of bar bandwidth
  })
  .attr('cy', function (d) {
    return yScale(d[1]);
  })
  .attr('r', 10)
  .on('mouseover', mouseover)
  .on('mousemove', mousemove1)// Line chart tooltip
  .on('mouseleave', mouseleave);

// line chart
const line = d3.line()
  .x(function (d, i) {
    return xScale(d[0]) + xScale.bandwidth() / 2;  // / 2 links line over center of bar bandwidth
  })
  .y(function (d) {
    return yScale(d[1]);
  })
  .curve(d3.curveMonotoneX);

bar.append('path')
  .attr('class', 'line')
  .attr('d', line(dataset));

J'ai essayé d'utiliser z-index dans le CSS et directement dans le JS mais je ne peux pas faire fonctionner l'un ou l'autre. J'ai également essayé de déplacer le code point au-dessus du code de ligne qui ne fonctionnait pas.

L'aide sera très appréciée.

Réponses

Jon Oct 02 2020 at 22:26

retirer

bar.append('circle')
  .attr('class', 'dot')
  .attr('cx', function (d, i) {
    return xScale(d[0]) + xScale.bandwidth() / 2; // / 2 links dots over center of bar bandwidth
  })
  .attr('cy', function (d) {
    return yScale(d[1]);
  })
  .attr('r', 10)
  .on('mouseover', mouseover)
  .on('mousemove', mousemove1)// Line chart tooltip
  .on('mouseleave', mouseleave);

ajouter

g.selectAll('dot')
  .data(dataset)
  .enter().append('circle')
  .attr('class', 'dot')  
  .attr('cx', function (d, i) {return xScale(d[0]) + xScale.bandwidth() / 2})  
  .attr('cy', function (d, i) {return yScale(d[1])})
  .attr('r', 5)  
  .on('mouseover', mouseover)
  .on('mousemove', mousemove1)// Line chart tooltip
  .on('mouseleave', mouseleave);

Et placez-le en bas de page.

voir le nouveau violon