【问题标题】:Ticks not showing up for a multi-series d3 svg chart多系列 d3 svg 图表未显示刻度
【发布时间】:2014-10-15 21:39:22
【问题描述】:

我无法通过基于 d3 svg 线的系列图显示我的刻度(通常显示在 x 和 y 轴上的轴标记点上的小线)

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

我想我可能在这里错过了一个选项

var xAxis = d3.svg.axis()
  .scale(x)
  .orient("bottom")
  .ticks(4)
  .tickFormat(function(d) {
    var mmdd = d.getMonth() + '/' + d.getDate();
    var time = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
    return mmdd + " "+ time;

  })
  .tickSize(1)
  .tickPadding(8);

var yAxis = d3.svg.axis()
  .scale(y)
  .tickSize(1)
  .ticks(6)
  .orient("left")
  .tickPadding(20);

我已尝试更改一些“刻度”参数,但我不明白为什么我的刻度在 x 和 y 轴上都丢失了。

感谢任何帮助或指点。

谢谢

【问题讨论】:

    标签: javascript svg d3.js


    【解决方案1】:

    .tickSize(1) 导致你的刻度太隐藏(太小),所以删除它,设置将默认为 6。

    如果您需要使轴线 (path) 本身更细(我猜这就是您使用 tickSize 选项的原因),最好使用一些 CSS 来设置样式,例如

    .axis path,
    .axis line {
        fill: none;
        stroke: #000000;
    }
    

    我通常建议在 CSS 中也使用 shape-rendering: crispEdges;,但这实际上会导致轴再次被隐藏,因为您使用了 viewBox,这似乎有点弄乱了这里的显示。

    此外,您似乎在每个轴上绘制了两次 - 一次是在 drawChart() 中,一次是在您调用时; drawAxis()drawChart 的末尾。我建议删除第一个。

    【讨论】:

    • 非常感谢。那解决了它。已解决 plunkr 合并您的更改 - plnkr.co/edit/oFDpd6vQ9IizZNxC0GbI?p=preview。我只画一次轴。 drawAxis 只能从 drawChart 中调用。
    • 是的。你说的对。它正在渲染轴两次。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 2020-08-24
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多