zoukankan      html  css  js  c++  java
  • 【 D3.js 进阶系列 — 4.0 】 绘制箭头

    转自:http://www.ourd3js.com/wordpress/?p=660

    【 D3.js 进阶系列 — 4.0 】 绘制箭头

    在 SVG 绘制区域中作图,在绘制直线和曲线时,常需要在某处添加箭头。本文介绍如何在 D3 中给直线和曲线添加箭头。

     401

    到目前为止,我们绘制 D3 的图表都是在 SVG 绘制区域内,虽然 D3 也可用 Canvas 或 WebGL 等作图,但 SVG 是最常用的。那么,用 D3 来绘制箭头,先要明白在 SVG 中是怎么绘制的。

    1. 在 SVG 中定义箭头的标识

    定义箭头的标识如下,先写一对 <defs> ,里面再写一对 <marker>,其中 marker 的属性的意义为:

    viewBox 坐标系的区域
    refX, refY 在 viewBox 内的基准点,绘制时此点在直线端点上(要注意大小写)
    markerUnits 标识大小的基准,有两个值:strokeWidth(线的宽度)和userSpaceOnUse(图形最前端的大小)
    markerWidth, markerHeight 标识的大小
    orient 绘制方向,可设定为:auto(自动确认方向)和 角度值
    id 标识的id号

    然后在 marker 里绘制图形即可,下面的代码中用 path 绘制了一个箭头的图形。

    2. 在 SVG 中绘制箭头

    有了上面的标识,就可以绘制箭头了。下面绘制一条线段,在线段末尾添加箭头:

    也可以用 path 来绘制:

    在不同的位置绘制的属性如下:

    • marker-start :路径起点处
    • marker-mid:路径中间端点处(必须是 path 中间出现的点)
    • marker-end :路径终点处

    3. 使用 D3 绘制箭头

    有了上面的内容,在 D3 中如何绘制呢?

    先定义箭头的标识:

    使用上述 marker 绘制箭头的代码为:

    结果图为本文开始的图片所示,完整代码为:

    SVG版:http://www.ourd3js.com/demo/J-4.0/arrow.svg

    D3版:http://www.ourd3js.com/demo/J-4.0/arrow.html

  • 相关阅读:
    [Tips] 树莓派VNC登录
    [Tips] 联通宽带+华为路由器,如何进行NAT
    [Tips] 树莓派4B 风扇安装
    [Tips] 家庭树莓派,如何外网访问
    [Tips] 命令行获取设备的外网IP
    MySQL 如何让自增id设置为从1开始
    MySQL报错:Packet for query is too large (2,588 > 2,048).
    Java 实现 Timstamp 和 String 互相转换
    MySQL修改 mysql-bin 日志保存天数以及文件大小限制
    Linux Shell 中的年月日 时分秒
  • 原文地址:https://www.cnblogs.com/1995hxt/p/5055881.html
Copyright © 2011-2022 走看看