d3js maximum and minimum on x scale. - d3.js

I want to control maximum and minimum of x scale on this graph made with d3js.
The graph is constructed with a following code:
nv.addGraph(function() {
var chart = nv.models.twoLinesWithFocusChart()
.x(function(d) {
return d[0]
})
.y(function(d) {
return d[1]
})
.clipEdge(true);
chart.xAxis
.orient("bottom") // this adds a label to the axis
.tickFormat(function(d) {
return d3.time.format('%d/%m/%y')(new Date(d))
});
chart.yAxis
.axisLabel('Values:') // this adds a label to the axis
.tickFormat(d3.format('d'));
chart.x2Axis
.tickFormat(function(d) {
return d3.time.format('%d/%m/%y')(new Date(d))
});
d3.select('#' + svgChartId + ' svg')
.datum(data)
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
Best regards.

There is a simillar question here by using :-
xScale.domain([minValue,maxValue]);
or you could try using :-
chart.forceX([minValue,maxValue]);
Hope it helps.

Related

Circles on nvd3 line chart

I need to add circules/nodes to each point on a line chart of nvd3.
I have my codes here - https://jsfiddle.net/sujit77/7ns2g4a1/12/
Also I need to have these circles with different colors depending on value at that point.
I tried to follow "http://www.d3noob.org/2013/01/change-line-chart-into-scatter-plot.html". But messed up my code between D3 and nvd3 functions.
nv.addGraph(function() {
var chart = nv.models.lineChart()
.x(function(d) {
return d3.time.format("%Y-%m-%d %H:%M:%S").parse(d['key']);
})
.y(function(d){ return d.value; })
var format = d3.time.format("%m %d %Y");
chart.yAxis
.tickFormat(d3.format(',.2f'));
chart.xAxis
.tickFormat(function(d) {
return d3.time.format('%Y %b %d')(new Date(d))
});
d3.select('#line-charts').append('svg')
.attr('height', 250)
.attr('width', 400)
.datum(dataValue)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
I found similar question - Draw a circle at a point on an NVD3 line chart, but its unaswered yet.

Trouble with nvd3 date-data line chart

I am quite new in D3 and nvd3. I am trying to plot a graph with date axis and data axis - https://jsfiddle.net/sujit77/7ns2g4a1/6/.
var dataValue = [{'key':'Line', 'values':[{"key":"2016-04-04 0:0:0","value":1},{"key":"2016-04-05 0:0:0","value":1},{"key":"2016-04-07 0:0:0","value":1},{"key":"2016-04-08 0:0:0","value":1},{"key":"2016-04-11 0:0:0","value":1},{"key":"2016-04-13 0:0:0","value":1},{"key":"2016-04-14 0:0:0","value":0.5},{"key":"2016-04-19 0:0:0","value":1},{"key":"2016-04-20 0:0:0","value":1},{"key":"2016-04-22 0:0:0","value":1},{"key":"2016-04-25 0:0:0","value":1},{"key":"2016-04-26 0:0:0","value":1},{"key":"2016-04-27 0:0:0","value":1},{"key":"2016-04-28 0:0:0","value":1},{"key":"2016-04-29 0:0:0","value":1},{"key":"2016-05-03 0:0:0","value":1},{"key":"2016-05-04 0:0:0","value":0},{"key":"2016-05-06 0:0:0","value":1},{"key":"2016-05-09 0:0:0","value":1},{"key":"2016-05-10 0:0:0","value":1},{"key":"2016-05-11 0:0:0","value":1},{"key":"2016-05-12 0:0:0","value":1},{"key":"2016-05-13 0:0:0","value":1},{"key":"2016-05-16 0:0:0","value":1},{"key":"2016-05-17 0:0:0","value":1},{"key":"2016-05-19 0:0:0","value":1},{"key":"2016-05-24 0:0:0","value":0},{"key":"2016-05-25 0:0:0","value":0.5},{"key":"2016-05-26 0:0:0","value":1}]}];
nv.addGraph(function() {
var chart = nv.models.lineWithFocusChart()
//.showControls(false)
//.showMaxMin(false);
.x(function(d) {return d3.time.format("%Y-%m-%d %H:%M:%S").parse(d['key']);})
var format = d3.time.format("%m %d %Y");
chart.yAxis
.tickFormat(d3.format(',.2f'));
chart.xAxis
.tickFormat(function(d) { return d3.time.format('%Y %b %d')(new Date(d)) });
d3.select('#line-charts').append('svg')
.attr('height', 250)
.attr('width', 400)
.datum(dataValue)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
I am not able to plot the graph which should have been generated using the sample data. I am getting following error in browser's console window -
Error: attribute transform: Trailing garbage, "translate(0,NaN)".
Along with that I am trying to hide the bottom scale and min-max value in X-axis using ".showControls(false)" and ".showMaxMin(false)". But those are not working.
You forgot to do the y accessor.
Do something like:
chart.y(function (d) { return d.value; });

How to change Labels colors on a donut chart using nvd3?

How can I make the labels have the same color of each slice on donut chart using nvd3?
Example image
Got it!
var colors = ["#eb5945", "#f8e71c", "#67c60b"];
nv.addGraph(function() {
var chart = nv.models.pieChart()
.x(function(d) { return d.label })
.y(function(d) { return d.value })
.showLabels(true)
.showLegend(false)
.labelThreshold(.05)
.tooltips(false)
.color(colors)
.donutLabelsOutside(true)
.donut(true)
.donutRatio(0.7);
d3.select("#chart svg")
.datum(data)
.transition().duration(1200)
.call(chart);
d3.selectAll('.nv-label text')
.each(function(d,i){
d3.select(this).style('fill',colors[i])
d3.select(this).style('font-weight', 700)
d3.select(this).style('font-size', 16)
})
return chart;
});

Nvd3 legend vertically placed but want it to be horizantal

I'm using nvd3 for drawing line chart for two series.As u can see in plunk PlunkLink my legends are stacked vertically .I want them to be horizantal for this width. Note: I can't edit the nvd3.js and also cant increase the width of chart for my app.I have tried few suggestions but it didn't work for line chart.Ty for ur response
nv.addGraph(function() {
var chart = nv.models.lineChart()
.x(function(d) {
return new Date(d.time)
})
.y(function(d) {
return d.value
})
.color(["#FF0000", "#000000"])
.useInteractiveGuideline(false)
.forceY(0)
.width(300)
.height(200)
;
chart.xAxis
.tickFormat(function(d) {
return d3.time.format('%H:%M')(new Date(d))
});
chart.xScale(d3.time.scale.utc());
chart.options({
noData: "Not enough data to graph",
rightAlignYAxis: false,
});
chart.yAxis.tickFormat(d3.format('values'));
d3.select('nv-indexLine').fill("black");
d3.select('#chart svg')
.datum(formattedData)
.call(chart);
nv.utils.windowResize(chart.update);
chart.lines.interactive(false);
return chart;
});

Line chart using nvd3

I'm new to this d3 and nvd3.I'm trying to build a multi line chart using nvd3 and i have got 2 issues
1) the x axis doesn't seem to show the right values for hour and minutes as in json data which has date in standard utc format.
2) when i put the the first value as non-zero for both memory and cpu it scales down to negative y axis and looks weird.
Ty for the help. here is the plunk
nv.addGraph(function() {
var chart = nv.models.cumulativeLineChart()
.x(function(d) {
console.log(d.time)
return d.time
})
.y(function(d) {
console.log(d.value)
return d.value
})
.color(["#FF0000", "#000000"])
.height(210)
.width(420)
.useInteractiveGuideline(false)
.showControls(false)
.forceY(0)
;
chart.xAxis
.tickFormat(function(d) {
return d3.time.format('%H:%M')(new Date(d))
});
chart.yAxis.tickFormat(d3.format(',.1'));
d3.select('nv-indexLine').fill("black");
d3.select('#chart svg')
.datum(formattedData)
.call(chart);
nv.utils.windowResize(chart.update);
chart.lines.interactive(false);
return chart;
});
One change make your function like this for return x values it should return a Date object.
So instead of doing this
.x(function(d) {
console.log(d.time)
return d.time
})
Do like this to return Date object
.x(function(d) {
console.log(d.time)
return new Date(d.time)
})
working code here

Resources