作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 d3.js 制作了一个散点图,其中的点按其名称和随附的数字排列。
绘制的数据如下所示:
name, group, number
"AB", "A", 0.5
"ABC", "A", 10.0
"BC", "B", 3.0
"BCD", "B", 5.0
"BCDE", "B", 0.3
"CD", "C", 1.6
"DE", "D", 1.5
var x = d3.scale.ordinal()
.rangeBands([0, 400]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickValues(0) // hide ticks
.tickFormat(""); // hide labels
x.domain(data.map(function(d) { return d.name; }));
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + 400 + ")")
.call(xAxis)
x
至
x2
,使刻度和标签可见,并派生域不是来自
d.name
但来自
d.group
.完整代码为
here .自然地,这会沿整个 x 轴分布标签和刻度,并且不包含组信息。
最佳答案
天真的方法
一种简单但可能并不理想的处理方式是使用 tickFormat
简单地为刻度上的每个序数值重复组值:
var lkUp = {};
chartData.forEach(function(d) { lkUp[d.name] = {group: d.group}; });
xAxis.tickFormat(function(d) { return lkUp[d].group; });
axis
组件,您可以分别绘制这些组,即:
//'chartGroups' is an array of calculated groups, with start and end coordinates
var chartGroups = svg.selectAll("g.chartGroup").data(chartGroups)
.enter().append("g").attr(..);
chartGroups.append("text").attr(..);
chartGroups.append("path").attr(..);
关于d3.js - 将(第二个)x 轴添加到散点图以显示组信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25913528/
我是一名优秀的程序员,十分优秀!