Angular NVD3: установите yDomain в stackedAreaChart

Я использую:

Я попытался добавить диаграмму с областями стека с конкретным доменом по оси Y и доволен результатом, потому что yDomain и диаграмма работают, но у меня есть небольшая проблема дизайна, которую я хочу решить...


Без домена по оси Y:

Работает правильно, без проблем, но не совсем то, что я хочу:

диаграмма без домена

С доменом по оси Y

В последней ситуации я добавил домен по оси Y:

 var maxValue, minValue, margin;
  
 maxValue = Math.max.apply(Math,data[0].values.map(function(o){return o[1];}));
 minValue = Math.min.apply(Math,data[0].values.map(function(o){return o[1];}));
 margin = 0.1 * (maxValue - minValue);
 options.chart.yDomain = [minValue, maxValue+margin];

И теперь это именно то, что я хочу! Я добавил домен... Но я не понимаю, почему ось X и диаграмма скрыты...

диаграмма с доменом

Как я могу решить эту проблему дизайна? Почему это происходит?

Спасибо!


Свойства диаграммы:

"chart": {
    "type": "stackedAreaChart",
    "height": 450,
    "margin": {
      "top": 20,
      "right": 20,
      "bottom": 20,
      "left": 40
    },
    "x": function (d) {
      return d[0];
    },
    "y": function (d) {
      return d[1];
    },
    "useVoronoi": false,
    "clipEdge": true,
    "showControls": false,
    "duration": 100,
    "useInteractiveGuideline": true,
    "xAxis": {
      "tickFormat": function (d) {
        return d3.time.format("%H:%M")(new Date(d));
      }
    },
    "yAxis": {
      "tickFormat": function (d) {
        return d3.format(",.2f")(d);
      },
    },
    "zoom": {
      "enabled": false,
      "scaleExtent": [1, 10],
      "useFixedDomain": true,
      "useNiceScale": false,
      "horizontalOff": true,
      "verticalOff": true,
      "unzoomEventType": "dblclick.zoom"
    }
  }
  

person Aral Roca    schedule 04.03.2016    source источник


Ответы (1)


Наконец, я решил эту проблему, изменив тип диаграммы с stackedAreaChart на lineChart.

"chart": {
    "type": "lineChart",
    // ... All the other options are the same

После этого единственное изменение, которое нам нужно сделать, это добавить area:true в объект data, и мы получим тот же график с исправленной ошибкой.

data = [{
          color:"#e35b5a",
          key:"A",
          values:values,
          area: true //Add this line in the data object
       }];

Результат:

График без проблем

person Aral Roca    schedule 07.03.2016