只有一个项目显示在 x 轴 d3 中 - 使用刻度值的序号
Only one item get's displayed in x axis d3 - ordinal using tickvalues
我这里有一支笔,它显示了我的问题。如您所见,x 轴上只有一个值。如果我删除tickvalues
,我会得到所有值,但这会导致其他数据出现问题,因为会有大量的数据集。我正在使用tickvalues
将项目数限制为 20。这适用于我的其他图表,但不适用于此图表。比例ordinal
,在控制台中,我在调用xaxis时得到了NaN
。我认为这是在干扰tickvalues
.如果有人能看一下笔并提供任何建议,将不胜感激。下面是代码部分。有关完整代码,请参阅笔。
function plotVerticallyStacked(data) {
checkLength(dataset);
var x = d3.scale.ordinal()
.rangeRoundBands([0, WIDTH], .1);
var y = d3.scale.linear()
.rangeRound([HEIGHT, 0]);
// Color range - add your favorites here
var color = d3.scale.ordinal()
.range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickValues(_arr.map(function(d) {
return d["state"];
}));
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(d3.format(".2s"));
appendResponsiveSvg();
svg.append("g")
.attr("transform", "translate(" + MARGINS.left + "," + MARGINS.top + ")");
var domain = ["sum(quantity)"];
data.forEach(function(_data) {
var y0 = 0;
_data.groupedItem = [];
_data.values.map(function(d, index) {
_data.groupedItem.push(domain.map(function(name) {
return {
label: "quantity" + (index + 1),
name: name,
y0: y0,
y1: y0 += +d[name]
};
})[0]);
_data.total = _data.groupedItem[_data.groupedItem.length - 1].y1;
});
});
data.sort(function(a, b) {
return b.total - a.total;
});
x.domain(data.map(function(d) {
return d.values[0]["sum(quantity)"];
}));
y.domain([0, d3.max(data, function(d) {
return d.total;
})]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + HEIGHT + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
var state = svg.selectAll(".state")
.data(data)
.enter().append("g")
.attr("class", "g")
.attr("transform", function(d) {
return "translate(" + x((d.values[0])["sum(quantity)"]) + ",0)";
});
state.selectAll("rect")
.data(function(d) {
return d.groupedItem;
})
.enter().append("rect")
.attr("width", x.rangeBand())
.attr("y", function(d) {
return y(d.y1);
})
.attr("height", function(d) {
return y(d.y0) - y(d.y1);
})
.style("fill", function(d) {
return color(d.label);
});
}
plotVerticallyStacked(verticalStackedData);
我希望这就是你想要的:https://jsfiddle.net/reko91/yg0rs4xc/17/
我发现使用小提琴:)更容易
代替刻度值,我使用了刻度格式:
.tickFormat(function(d, i) {
return d;
});
让我知道是否可以:)
相关文章:
- 选中时高亮显示项目
- 如何检查切换功能是否显示项目
- 煎茶 2.4.1 - 列表不显示项目
- jquery :bxSlider 轮播活动类,用于所有显示项目(非单个)
- 对于数组 {{显示项目}} 中的每个项目
- Instagram API 和 jquery 的问题:无法显示项目
- 如何以任何给定的方式在组合框中显示项目
- 使用jquery在同一位置显示项目
- 如何继续在我的页面上添加/显示项目,同时滚动垂直栏
- 在Array Controller ember.js中显示项目
- 格式错误的HTML:如何不在空的li元素上显示项目符号
- 在树面板中显示项目的数据格式
- Jquery在
- 中显示项目列表
- 在新闻贴纸中显示项目
- Youtube V3频道搜索有结果,但不显示项目
- ExtJS组合框不能显示项目
- PaperJS旋转函数显示项目两次
- ReactJS显示项目列表
- 我如何格式化谷歌图表数据,以显示项目的计数,但按年过滤
- 使用jQuery调整大小来显示项目的大小