淘先锋技术网

首页 1 2 3 4 5 6 7

关联知识

使用基础轴

在网络浏览器中打开以下文件的本地副本:

代码略

首先让我们看一下以下代码示例:

代码略

前面的代码仅在下面的屏幕快照中显示了四个按钮,从而产生了可视输出。 当您单击水平底部时,它将显示以下内容:

横轴

以下屏幕截图显示了单击垂直右按钮时的外观:

纵轴

本方法的第一步是创建svg元素,该元素将用于渲染我们的轴。 这是使用在行A上定义的createSvg函数以及在行B和C上显示的D3附加和attr修饰符函数完成的。

让我们看一下如何在以下代码片段中创建SVG画布:

var height = 500,  
  width = 500,  
  margin = 25, 
  offset = 50, 
  axisWidth = width - 2 * margin, 
  svg; 
     
function createSvg(){ // <-A 
     svg = d3.select('body').append('svg') // <-B 
        .attr('class', 'axis') // <-C 
        .attr('width', width) 
        .attr('height', height); 
}  

现在,我们准备在此svg画布上渲染轴。 renderAxis函数旨在完全做到这一点。 在D行上,我们首先使用给定的D3轴生成器函数创建一个Axis组件。 D3版本4.x附带有四个内置的轴生成器,用于不同的方向。 方向告诉D3如何放置给定的轴,以及如何渲染它。 例如,无论是水平还是垂直。 D3开箱即用支持的四个轴方向如下:

  • d3.axisTop:水平轴,标签置于轴的顶部
  • d3.axisBottom:水平轴,标签位于轴的底部
  • d3.axisLeft:垂直轴,标签放置在该轴的左侧
  • d3.axisRight:垂直轴,标签位于该轴的右侧

您可以在下面的代码片段中看到,当您单击指定的按钮时,这些确实是传递给renderAll函数的函数:

<div class='control-group'> 
    <button onclick='renderAll(d3.axisBottom)'> 
        horizontal bottom 
    </button> 
    <button onclick='renderAll(d3.axisTop)'> 
        horizontal top 
    </button> 
    <button onclick='renderAll(d3.axisLeft)'> 
        vertical left 
    </button> 
    <button onclick='renderAll(d3.axisRight)'> 
        vertical right 
    </button> 
</div> 
... 
function renderAxis(fn, scale, i){ 
        var axis = fn() // <-D 
            .scale(scale) // <-E 
            .ticks(5); // <-G 
... 

D3 Axis旨在与D3标度一起使用。 使用scale()函数提供轴标度。 在此示例中,我们使用以下比例尺绘制三个不同的轴:

详情参阅http://viadean.com/d3_axe.html