Изменение полей и отступов в диаграмме nvd3

У меня есть следующая nvd3 сложенная диаграмма:

enter image description here

Я хочу добавить маржу между цифрами/датами и графиком, а также легендой вверху и графиком. (см. рисунок, я обозначил позиции красной линией:

enter image description hereenter image description here

Я изучал визуализированный html, но не могу получить доступ к значениям полей через css, даже если я попробую его встроить с консолью firefox. Я смог изменить семейство шрифтов и цвет с помощью этого css:

#chart1
  height: 300px
  text
    fill: #1a1f22
    font-size: 0.7em
    font-family: 'Source Sans Pro', sans-serif

Но все-таки какой-то элемент (текст, g, svg,...) Я пытаюсь прикрепить стиль, ничего с точки зрения поля не меняется.

Вот код javascript для диаграммы:

nv.addGraph(function() {
    var histcatexplong = [
        <?= $array ?>

    ];


    var colors = d3.scale.category20();
    var keyColor = function(d, i) {return colors(d.key)};

    var chart;
chart = nv.models.stackedAreaChart()
.useInteractiveGuideline(true)
.showControls(false)
.x(function(d) { return d[0] })
.y(function(d) { return d[1] })
.color(keyColor)

.transitionDuration(300);




chart.xAxis
.tickFormat(function(d) { return d3.time.format('%e.%m.%y')(new Date(d)) });



chart.yAxis
.tickFormat(d3.format(',.2f'));

d3.select('#chart1')
.datum(histcatexplong)
.transition().duration(1000)
.call(chart)


.each('start', function() {
setTimeout(function() {
d3.selectAll('#chart1 *').each(function() {

if(this.__transition__)
this.__transition__.duration = 1;
})
}, 0)
});

nv.utils.windowResize(chart.update);


return chart;
});

Я читал все примеры и документы nvd3, но до сих пор не могу найти способ манипулировать выше. Кто-нибудь знает, как это сделать?

Ответ 1

Что касается вашего вопроса о марже, вы можете изменить поля вокруг легенды, вызвав:

 chart.legend.margin().bottom = 50;

Или, альтернативно:

 chart.legend.margin({top: 5, right: 0, bottom: 50, left: 0});

Вы можете добавить пробел между тиками и осями, используя регулярную функцию D3 tickPadding:

 chart.yAxis.tickPadding(25);
 chart.xAxis.tickPadding(25);

как в этот Plunker.

Ответ 2

.nvd3 .nv-axis.nv-x path.domain {
  stroke-opacity: 1;
  stroke: red;
}

CSS - это, вероятно, путь. (NVD3 делает ось X невидимой по умолчанию, поэтому сначала вы хотите установить ее непрозрачность на 1.)

Пример в этот Plunker.