2017-06-14 3 views
1

J'utilise c3.js pour tracer quelques données de séries temporelles et les tracés sont en train de faire des boucles pour une raison quelconque quand il n'y a pas besoin de boucle.c3.js spline série chronologique tableau en arrière

Voici la vue de tous les 5 des parcelles que je suis comploter enter image description here

regarder de plus près à un seul d'entre eux, nous pouvons voir que les boucles en arrière, même si il n'y a pas de points en arrière.

enter image description here

Je sais qu'il est à cause de l'algorithme d'ajustement, mais je ne suis pas sûr de savoir comment le fixer. Je n'utilise aucune autre configuration pour c3 autre que la simple configuration des données et des splines.

Pour reproduire le problème et voir par vous-même, vous pouvez essayer this page et remplacer l'extrait qui suit:

var chart = c3.generate({ 
    data: { 
     columns: [ 
      ['X', 1, 2, 3.9, 4, 5, 6], 
      ['data1', 30, 200, 100, 400, 15, 250], 
      ['data2', 130, 100, 140, 200, 150, 50] 
     ], 
     x: 'X', 
     type: 'spline' 
    } 
}); 
+0

Je pense que nous aurons besoin de voir un [mcve] –

+0

J'ai dit dans le message que j'utilise l'intrigue de base sans config supplémentaire. Donc, voici mon code: http://c3js.org/samples/chart_spline.html – sookool99

+0

Bon, si Joe Random Helper visite ce lien, que devrait-il faire dans l'extrait pour voir ce que vous voyez? –

Répondre

0

Je trouve cette question intéressante, donc hier, j'ai ajouté un exemple concret à la question, qui reproduit le problème avec 2 points consécutifs très proches sur l'axe X, ce qui déclenche c3 pour générer des splines qui "reculent".

interpolation Spline est déléguée à d3, et par défaut de type cardinal, mais qui peut être changé en c3 comme ceci:

var chart = c3.generate({ 
    data: { 
     columns: [ 
      ['X', 1, 2, 3.9, 4, 5, 6], 
      ['dataA', 30, 200, 100, 401, 15, 250], 
      ['dataB', 130, 100, 140, 200, 150, 50] 
     ], 
     x: 'X', 
     type: 'spline' 
    }, 
    spline: { 
     interpolation: { 
      type: 'basis' 
     } 
    } 
}); 

Voir this page pour d'autres options: 'linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'.

Avec d3, Afin d'obtenir splines monotones sur l'axe X, vous devez jouer avec le paramètre tension, qui peut aller de 0.0 à 1.0 et par défaut 0.7 (pour les points proches sur l'axe X, vous avez besoin valeurs élevées proches de 1.0). Voir this fiddle, jouer avec .tension(0.3), voir comment la courbe change.

Malheureusement, cela ne semble pas être exposé dans c3. Ce pourrait être un problème valide à suggérer à leur GitHub. Mais ce ne serait pas si simple car si vos données ont des pas variables sur l'axe X (comme dans l'exemple), vous aurez besoin d'un tension non constant, et autant que je sache, cela ne peut être implémenté qu'avec une fonction d'interpolation personnalisée. d3 (d'autant plus improbable d'être exposé en c3).