运用d3和d3_top实现折现的方法

昨天和今天一直在弄如何把折线倒置
// 模拟数据
var dataset = [
  {x: 0, y: 11}, {x: 1, y: 35},
  {x: 2, y: 23}, {x: 3, y: 78},
  {x: 4, y: 55}, {x: 5, y: 18},
  {x: 6, y: 98}, {x: 7, y: 100},
  {x: 8, y: 22}, {x: 9, y: 65}
];
// 创建x轴的比例尺(线性比例尺)
var xScale = d3.scale.linear()
    .domain(d3.extent(dataset, function (d) {
       return d.x;
    }))
    .range([0, width - padding.left - padding.right]);
// 创建y轴的比例尺(线性比例尺)
var yScale = d3.scale.linear()
    .domain([0, d3.max(dataset, function (d) {
       return d.y;
    })])
    .range([height - padding.top - padding.bottom, 0]);
// 创建x轴
var xAxis = d3.svg.axis()
    .scale(xScale)
    .orient( 'bottom' );
// 创建y轴
var yAxis = d3.svg.axis()
    .scale(yScale)
    .orient( 'left' );
// 添加SVG元素并与x轴进行“绑定”
main.append( 'g' )
    .attr( 'class' , 'axis' )
    .attr( 'transform' , 'translate(0,' + (height - padding.top - padding.bottom) + ')' )
    .call(xAxis);
// 添加SVG元素并与y轴进行“绑定”
main.append( 'g' )
    .attr( 'class' , 'axis' )
    .call(yAxis);
这次我们模拟了一些点的数据来进行折线的绘制。 d3.scale.linear() 创建了线性比例尺, linear.domain() 定义定义域, linear.range() 定义值域。这里需要注意一下,因为SVG画布的y轴与传统认知上的y轴的方向是反着来的,所以在定义y轴的定义域和值域对应关系时,也需要反着来。 d3.extent 可以得到参数数组中的最大值和最小值,并以数组的形式返回。然后用 d3.svg.axis() 创建了两个坐标轴,把比例尺应用到它们上面,并且用 axis.orient() 设置了坐标轴的刻度尺的方向。最后,添加SVG元素,用 call() 把定义好的坐标轴与SVG元素联系起来。通过设置它们的transform属性来移动元素,使它们看起来像是一个坐标系。

说白了就是把y轴的.range([])里面两个数组元素调换方向就可以了。

// Horizontal 创建x轴的比例尺(线性比例尺)
var x = d3.time.scale()
.range([padding, width - padding]);

// Vertical 创建y轴的比例尺(线性比例尺) 把height,5对掉,那么折线就会向下走
var y = d3.scale.linear()
.range([height, 5]);
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值