d3-transform

WebJar for d3-transform

License

License

MIT
Categories

Categories

ORM Data
GroupId

GroupId

org.webjars.bower
ArtifactId

ArtifactId

d3-transform
Last Version

Last Version

1.0.4
Release Date

Release Date

Type

Type

jar
Description

Description

d3-transform
WebJar for d3-transform
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/trinary/d3-transform

Download d3-transform

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.bower/d3-transform/ -->
<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>d3-transform</artifactId>
    <version>1.0.4</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.bower/d3-transform/
implementation 'org.webjars.bower:d3-transform:1.0.4'
// https://jarcasting.com/artifacts/org.webjars.bower/d3-transform/
implementation ("org.webjars.bower:d3-transform:1.0.4")
'org.webjars.bower:d3-transform:jar:1.0.4'
<dependency org="org.webjars.bower" name="d3-transform" rev="1.0.4">
  <artifact name="d3-transform" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.bower', module='d3-transform', version='1.0.4')
)
libraryDependencies += "org.webjars.bower" % "d3-transform" % "1.0.4"
[org.webjars.bower/d3-transform "1.0.4"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

D3-Transform

d3-transform makes it easy to define and reuse functions that produce transform attribute strings for SVG elements. Using d3-transform reduces repetition, allows you to compose multiple transforms, and eliminates ugly string-interpolation from your d3 visualization code.

Installation

Include d3-transform in your web page using a script tag any time after you've included d3:

<script src="http://d3js.org/d3.v4.min.js"></script>
<script src="d3-transform.js"></script>

Usage

d3-transform replaces the manual construction of transform attribute strings for SVG elements. For example, if you want to translate, rotate, and scale a group element depending on the data bound to that element, you'd write something like this without d3-transform:

d3.select('svg').selectAll('g')
    .data([{ size: 5 }, { size: 10 }])
  .enter().append('g')
    .attr('transform', function(d, i) {
      return "translate(20," + d.size * 10 + ") rotate (40) scale(" + ( d.size + 2 ) + ")");
    });

With d3-transform, you can rewrite the above code like this:

var transform = d3.transform()
    .translate(function(d) { return [20, d.size * 10] })
    .rotate(40)
    .scale(function(d) { return d.size + 2 });

var svg = d3.select('svg').selectAll('g')
    .data([{ size: 5 }, { size: 10 }])
    .enter()
    .append('g')
    .attr('transform', transform);

In both cases the resulting document will look the same:

<svg>
  <g transform="translate(20,50) rotate(40) scale(7)"></g>
  <g transform="translate(20,100) rotate(40) scale(12)"></g>
</svg>

You can specify arguments for these operations by either providing positional arguments to the corresponding method of the transform object, or by providing a function that will return an array of arguments that are interpreted as positional arguments. In the special case where an operation only takes one argument, your function can return a number.

All of the SVG 1.1 transform operations are supported: matrix, rotate, translate, scale, skewX, and skewY. See the SVG 1.1 Specification or MDN for further details on the arguments of each operation.

When using node.js, calls to require('d3-transform') return a direct reference to the "transform" method.

var d3 = require('d3');
var d3Transform = require('d3-transform');

var transform = d3Transform()
    .translate(function(d) { return [20, d.size * 10] })
    .rotate(40)
    .scale(function(d) { return d.size + 2 });

var svg = d3.select('svg.example1').selectAll('g')
    .data([{ size: 5 }, { size: 10 }])
    .enter()
    .append('g')
    .attr('transform', transform);

Composition

If you want to extend one transform with another set of operations, pass the initial transform object into the d3.transform() function:

var transform1 = d3.transform()
  .translate(10,20);

var transform2 = d3.transform(transform1)
  .scale(function(d) { return [d.size];})

d3.select('svg.example2').selectAll('g')
    .data([{ size: 5 }, { size: 10 }])
  .enter().append('g')
    .attr('transform', transform2);

Another way to compose multiple transform objects is to use the seq operation:

var transform1 = d3.transform()
  .translate(10,20);

var transform2 = d3.transform()
  .scale(function(d) { return [d.size];})

var transform =
  transform1.seq(transform2);

With either of these approaches, the result is a document that looks like this:

<svg>
  <g transform="translate(10,20) scale(5)"></g>
  <g transform="translate(10,20) scale(10)"></g>
</svg>

Contributors

Versions

Version
1.0.4