2014-10-19 83 views
3

我不知道刻度线的位置如何与d3 svg轴一起工作。我试图与蜱,tickSize选择玩,但基本上是我得到的开始和结束蜱“有时”使用随机数据绘制如何呈现结束刻度始终使用d3 svg轴

http://plnkr.co/edit/i5DBgfWzr2sa8Yugg2A8?p=preview

(请忽略angularjs的方面。我感兴趣的部分是如下d3)

var make_x_axis = function() { 
      return d3.svg.axis() 
        .scale(x) 
        .orient("bottom") 
        .ticks(5) 
        .tickFormat("") 
        .tickPadding(8); 
     }; 

     var make_y_axis = function() { 
      return d3.svg.axis() 
        .scale(y) 
        .ticks(6) 
        .orient("left") 
        .tickSize(10,10) 
        .tickPadding(8); 
     }; 

我该如何总是得到X和Y轴的开始和结束刻度?我清楚地总是得到X轴和Y轴上的开始和结束刻度线(不确定这是怎么回事 - 我没有看到铬检查器中该位置的.tick元素),但标签丢失。我可以找到第一个和最后一个滴答声,并使用滴答标记信息呈现文本,但显然我不能总是这样做,因为有时轴会给我开始滴答声,而有时它不会。

任何帮助表示赞赏。

谢谢

+0

要做到这一点的唯一方法是使用'axis.tickValues()'显式设置刻度值。 – 2014-10-19 19:56:21

+0

@Lars,谢谢你。我会试一试。我也看到这个x轴和y轴添加了一个类域的路径元素,如下所示=> | --------------------- |我不想在最后滴答滴答。有没有办法删除它? – user2789284 2014-10-19 20:06:18

+0

嗯,你可以删除整个路径,但是你必须绘制一条线来获取轴线。 – 2014-10-19 20:29:29

回答

4

我不知道我完全理解你的问题,如果你想删除的结束x轴蜱,你应该设置

.outerTickSize(0), 

如果您想自定义的结束蜱,你可以使用

.tickValues(y.ticks(5).concat(y.domain())); 

看看我的JSFiddle进行演示。

+0

outerTickSize工作得很整齐。关于tickValues(如Lars所建议的),我认为这很好,但我想知道如何从我的数据值中选择最好的样本,即我的数据看起来像(t0,v0)(t1,v1)...(tn,vn ),我想肯定在y轴上包括x轴和v0,vn以及在x和y轴上均匀间隔的5个样​​本。有没有一种聪明的方式在d3中做到这一点? – user2789284 2014-10-20 06:38:07

+0

您的意思是yAxis从y0到yN,而xAxis不需要开始勾号并将x1显示到xN?你有没有看到我的小提琴在上面,我的xAxis和yAxis是否满足你的需求?或者如果你想将域绑定到tick中,你可以这样写:.tickValues(y.ticks(5).concat(y.domain())) – 2014-10-20 08:31:54

+0

Huan,感谢你帮助我。你的tickValues在你的条形图上工作得非常好,但不会与我的系列图 - 看到这个 - http://plnkr.co/edit/i5DBgfWzr2sa8Yugg2A8?p=preview。关于你如何表达你的tickValues,我认为这是方向我应该朝前走,但我错过了一些东西。当我这么做的时候,我所有的蜱虫都会在我的地盘的同一个地方崩塌......任何想法? – user2789284 2014-10-20 17:24:05