Issue #297: get showMaxMin to work on ordinal x axis scale

master-patched
Bob Monteverde 12 years ago
parent 739e385fce
commit dacbf5303f

@ -57,6 +57,7 @@ nv.addGraph(function() {
var chart = nv.models.multiBarChart();
chart.xAxis
.showMaxMin(true)
.tickFormat(d3.format(',f'));
chart.yAxis

@ -338,6 +338,7 @@ nv.models.axis = function() {
, rotateLabels = 0
, rotateYLabel = true
, staggerLabels = false
, isOrdinal = false
, ticks = null
;
@ -453,13 +454,15 @@ nv.models.axis = function() {
axisLabel
.attr('x', w/2);
if (showMaxMin) {
//if (showMaxMin && !isOrdinal) {
var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
.data(scale.domain());
//.data(scale.domain())
.data([scale.domain()[0], scale.domain()[scale.domain().length - 1]]);
axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
axisMaxMin.exit().remove();
axisMaxMin
.attr('transform', function(d,i) {
return 'translate(' + scale(d) + ',0)'
return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
})
.select('text')
.attr('dy', '.71em')
@ -472,7 +475,9 @@ nv.models.axis = function() {
});
d3.transition(axisMaxMin)
.attr('transform', function(d,i) {
return 'translate(' + scale.range()[i] + ',0)'
//return 'translate(' + scale.range()[i] + ',0)'
//return 'translate(' + scale(d) + ',0)'
return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
});
}
if (staggerLabels)
@ -577,7 +582,7 @@ nv.models.axis = function() {
if (scale.domain()[0] == scale.domain()[1] && scale.domain()[0] == 0)
wrap.selectAll('g.nv-axisMaxMin')
.style('opacity', function(d,i) { return !i ? 1 : 0 });
}
if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {
@ -682,6 +687,7 @@ nv.models.axis = function() {
if (!arguments.length) return scale;
scale = _;
axis.scale(scale);
isOrdinal = typeof scale.rangeBands === 'function';
d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands');
return chart;
}
@ -5545,6 +5551,9 @@ nv.models.multiBarChart = function() {
.attr('transform', function(d,i,j) { return 'rotate('+rotateLabels+' 0,0)' })
.attr('text-transform', rotateLabels > 0 ? 'start' : 'end');
g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')
.style('opacity', 1);
yAxis
.scale(y)
.ticks( availableHeight / 36 )

10
nv.d3.min.js vendored

File diff suppressed because one or more lines are too long

@ -17,6 +17,7 @@ nv.models.axis = function() {
, rotateLabels = 0
, rotateYLabel = true
, staggerLabels = false
, isOrdinal = false
, ticks = null
;
@ -132,13 +133,15 @@ nv.models.axis = function() {
axisLabel
.attr('x', w/2);
if (showMaxMin) {
//if (showMaxMin && !isOrdinal) {
var axisMaxMin = wrap.selectAll('g.nv-axisMaxMin')
.data(scale.domain());
//.data(scale.domain())
.data([scale.domain()[0], scale.domain()[scale.domain().length - 1]]);
axisMaxMin.enter().append('g').attr('class', 'nv-axisMaxMin').append('text');
axisMaxMin.exit().remove();
axisMaxMin
.attr('transform', function(d,i) {
return 'translate(' + scale(d) + ',0)'
return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
})
.select('text')
.attr('dy', '.71em')
@ -151,7 +154,9 @@ nv.models.axis = function() {
});
d3.transition(axisMaxMin)
.attr('transform', function(d,i) {
return 'translate(' + scale.range()[i] + ',0)'
//return 'translate(' + scale.range()[i] + ',0)'
//return 'translate(' + scale(d) + ',0)'
return 'translate(' + (scale(d) + (isOrdinal ? scale.rangeBand() / 2 : 0)) + ',0)'
});
}
if (staggerLabels)
@ -256,7 +261,7 @@ nv.models.axis = function() {
if (scale.domain()[0] == scale.domain()[1] && scale.domain()[0] == 0)
wrap.selectAll('g.nv-axisMaxMin')
.style('opacity', function(d,i) { return !i ? 1 : 0 });
}
if (showMaxMin && (axis.orient() === 'top' || axis.orient() === 'bottom')) {
@ -361,6 +366,7 @@ nv.models.axis = function() {
if (!arguments.length) return scale;
scale = _;
axis.scale(scale);
isOrdinal = typeof scale.rangeBands === 'function';
d3.rebind(chart, scale, 'domain', 'range', 'rangeBand', 'rangeBands');
return chart;
}

@ -226,6 +226,9 @@ nv.models.multiBarChart = function() {
.attr('transform', function(d,i,j) { return 'rotate('+rotateLabels+' 0,0)' })
.attr('text-transform', rotateLabels > 0 ? 'start' : 'end');
g.select('.nv-x.nv-axis').selectAll('g.nv-axisMaxMin text')
.style('opacity', 1);
yAxis
.scale(y)
.ticks( availableHeight / 36 )

@ -225,10 +225,6 @@ svg .title {
fill: rgba(0,0,0,1);
}
.nvd3 .nv-x.nv-axis text {
transform: rotate(90);
}
/**********
* Bars

Loading…
Cancel
Save