Función D3.js zoom.transform()

La función zoom.transform() en D3.js se usa para establecer la transformación de zoom actual de los elementos seleccionados en la transformación especificada.

Sintaxis:

zoom.transform(selection, transform[, point]);

Parámetros: esta función acepta un solo parámetro como se mencionó anteriormente y se describe a continuación:

  • selección: Este parámetro puede ser de selección o de transición.
  • transform: este parámetro se puede definir como una transformación de zoom o como una función.

Valor de retorno: esta función devuelve la transformación de zoom.

Los siguientes programas ilustran la función zoom.transform() en D3.js

Ejemplo 1:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8">
    <script src="https://d3js.org/d3.v4.min.js"> 
    </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;"> 
            Geeksforgeeks 
        </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>

Producción:

Ejemplo 2:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8">    
    <script src="https://d3js.org/d3.v4.min.js"> 
    </script> 
    <style>
        rect {
          cursor: pointer;
        }
    </style>
</head> 
<body> 
    <center>
        <h1 style="color: green;"> 
            Geeksforgeeks 
        </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> 

Producción:

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *