我在d3.js中创建了一个svg xy-chart.是否可以根据tickValue创建不同长度的刻度?
我已经制作了自己的tickFormat函数myTickFormat并使用它.tickFormat([format])并且工作正常,因为[format]应该是一个函数.但这是不可能做同样的.innerTickSize([size]),期望一个数字.
例如,如果我希望值70的刻度更长,我想做这样的事情:
var myTickSize = function(d) {
if (d === 70) { return 20;}
return 6;
};
Run Code Online (Sandbox Code Playgroud)
但当我myTickSize用作参数时.innerTickSize():
var yScale = d3.scale.linear();
var yAxis = d3.svg.axis()
.scale(yScale).orient("left")
.innerTickSize(myTickSize);
Run Code Online (Sandbox Code Playgroud)
我收到错误:每个tick的属性x2 ="NaN"错误的值无效.
首先,我想知道是否有人知道D3示例显示带错误条的分组条形图?我发现的最接近的事情是:
http://tenxer.github.io/xcharts/examples/(示例自定义Vis类型:误差线) http://bl.ocks.org/chrisbrich/5044999(点数的误差线)
我有一个分组条形图的工作示例,我想在显示MOE的图表中为每个条形添加一个错误栏.我需要采取哪些步骤才能实现这一目标?我该如何计算线的位置?这是我认为需要做的,请帮我填写我需要采取的步骤.
创建一个SVG行
通过取d.value的d3.max + MOE和d3.max的d.value - MOE来计算线的ymin和ymax.
附加
这不起作用,但它是在正确的轨道上?
var line = d3.svg.line()
.x(function(d) {return x(d.state); })
.y0(function(d) {return y(d.value - d.moe); })
.y1(function(d) {return y(d.value + d.moe); })
.interpolate("linear");
var errorBarSVG = d3.select("body").append("svg")
var errorBar = errorBarSVG.append("path")
.attr("d", line(data))
.attr("stroke", "red")
.attr("stroke-width", 1.5);
Run Code Online (Sandbox Code Playgroud)