The zoom.transform() function in D3.js is used to set the current zoom transform of the selected elements to the specified transform.
Syntax:
zoom.transform(selection, transform[, point]);
Parameters: This function accepts single parameter as mentioned above and described below:
- selection: This parameter can be selection or transition.
- transform: This parameter can be defined as a zoom transform or as a function.
Return Value: This function returns the zoom transform.
Below programs illustrate the zoom.transform() function in D3.js
Example 1:
<!DOCTYPE html> <html> <head>     <meta charset="utf-8">     </script>     <style>         svg text {              fill: green;              font: 20px sans-serif;              text-anchor: center;          }                    rect {           pointer-events: all;         }     </style> </head>  <body>     <center>         <h1 style="color: green;">             Geeksforneveropen         </h1>               <h3>D3.js | zoom.transform() Function</h3>                   <button id="reset">Reset</button><br/>                   <svg></svg>                   <script>             var width = 400;             var height = 200;                           var svg = d3.select("svg")               .attr("width", width)               .attr("height", height);                             // The scale used to display the axis.             var scale = d3.scaleLinear()               .range([10, width-20])               .domain([0, 100]);                            var shadowScale = scale.copy();                           var axis = d3.axisBottom()               .scale(scale);                             var g = svg.append("g")               .attr("transform", "translate(0, 50)")               .call(axis);                             // Standard zoom behavior:             var zoom = d3.zoom()               .scaleExtent([1, 10])               .translateExtent([[0, 0], [width, height]])               .on("zoom", zoomed);                            // Call the Zoom.             var rect = svg.append("rect")               .attr("width", width)               .attr("height", height)               .attr("fill", "none")               .call(zoom);                                       d3.select("#reset")               .on("click", function() {                 // Create an identity transform                 var transform = d3.zoomIdentity;                                   // Apply the transform:                 rect.call(zoom.transform, transform);               })             function zoomed() {               var t = d3.event.transform;               scale.domain(t.rescaleX(shadowScale).domain());               g.call(axis);             }         </script>     </center> </body> </html> |
Output:
Example 2:
<!DOCTYPE html> <html> <head>     <meta charset="utf-8">        </script>     <style>         rect {           cursor: pointer;         }     </style> </head> <body>     <center>         <h1 style="color: green;">             Geeksforneveropen         </h1>               <h3>D3.js | zoom.transform() Function</h3>                   <button>Trigger Zoom</button> <br/>         <span> Zoom Level: </span>         <span id="GFG"></span><br/>                   <svg></svg>                    <script>             var scale = d3.scaleSqrt()                  .range(["green", "purple", "blue"])                 .domain([1, 40, 1600]);                           var zoom = d3.zoom()                        .on("zoom", zoomed)                 .scaleExtent([1, 1600])                           var rect = d3.select("svg")                 .append("rect")                 .attr("width", 400)                 .attr("height", 300)                 .attr("fill", "green")                 .call(zoom);                           rect.call(zoom.transform, d3.zoomIdentity);                           d3.select("button").on("click", function() {                 var newTransform = d3.zoomIdentity.scale(100);                 rect.call(zoom.transform, newTransform);             })                           // Zoom function:             function zoomed(){               var k = d3.event.transform.k;               rect.attr("fill", scale(k));               d3.select("#GFG").text(k);             }         </script>     </center> </body> </html> |
Output:

