2016-12-19 1 views
0

J'ai créé un graphique linéaire pour afficher les données des trois derniers mois. Cela fonctionne bien, sauf qu'il montre seulement deux dates/mois dans l'axe des x (premier et dernier). L'étiquette pour le point central ne s'affiche pas.Afficher les mois dans le graphique nvd3 de l'axe des x - odoo?

linechart.js

self.chart = nv.models.lineChart() 
      .margin({left:100,botoom:50,top:0}) 
      .useInteractiveGuideline(true) 
      .transitionDuration(350) 
      .showYAxis(true) 
      .showXAxis(true) 
      .showLegend(false) 
      .width(220) 
      .height(150) 

      self.chart.xAxis 
      .axisLabel('Month') 
      .tickFormat(function(d) { 

       return d3.time.format("%b-%Y")(new Date(d)); }) 

      self.chart.yAxis 
      .axisLabel(myData[0].ylabel) 
      .tickFormat(d3.format(',.1f')); 

      myData = self.data; 

données

[{ 'y': 7L, 'x': u'2016-10 '}, {' y ': 2L, 'x': u'2016-11 '}, {' y ': 6L, 'x': u'2016-12'}]

image

enter image description here

+0

Avez-vous essayé 'xAxis.ticks (d3.time.months)'? – JulCh

+1

Je suppose que c'est à cause de l'espace disponible. Pouvez-vous augmenter la largeur du graphique et vérifier? 'nv.models.lineChart(). width (420)' – sandyJoshi

Répondre

0

https://github.com/d3/d3-axis/blob/master/README.md#axis_tickValues

Vous devez définir tickValues ​​pour votre axe ou d3 les générer pour vous. Jetez un oeil à l'extrait ci-dessous:

 chart.xAxis 
      .tickFormat(function(d) { return d3.time.format("%m/%d/%y")(new Date(d)); }) 
      .tickValues(_.map(tick_values, function(d) { return getDate(d); })) 
      .rotateLabels(-30); 

tick_values est un tableau. Pour plus d'informations, consultez la documentation ci-dessus.