【问题标题】:Inverting Y-Axis in D3在 D3 中反转 Y 轴
【发布时间】:2015-05-29 05:10:52
【问题描述】:

我真的很难反转我的 y 轴。我知道我可以在最后减去我的 svgContainer 的高度以获得准确的读数,但我确实需要实际翻转 svg 轴本身以保留“rect”标签中的坐标(x 和 y)属性。

我认为翻译和缩放会起作用,但它并没有改变任何东西。

function dynamicRectangles(){   
    var svgContainer = d3.select(".wall")
                                .append("svg")
                                .attr("translate",(0,wall.wall_height))
                                .attr("scale",(1,-1))
                                .attr("width", wall.wall_width)
                                .attr("height", wall.wall_height)
                                .style("border", "1px dashed black")
                                ;

        var drag = d3.behavior.drag()
            .on("drag", dragMove)



        var rect = svgContainer.selectAll(".draggableRectangle").data(art).enter()
                .append('rect')
                .attr('class', 'draggableRectangle')
                .attr('name', function(d) { return d.art_name; })
                 .attr('x', function(d) { return d.leftCorner.X; })
                 .attr('y', function(d) {return d.leftCorner.Y; })
                 .attr('width', function(d) { return d.art_width; })
                 .attr('height', function(d) { return d.art_height; })
                 .style("fill", "red")
                 .call(drag);



        function dragMove(d) {
             d3.select(this)
                 .attr("x", function () {return d3.event.x})
                 .attr("y", function () {return d3.event.y});
             var X = document.getElementById("displayInfo");
                 X.innerHTML = d3.event.x;
             var Y = document.getElementById("displayInfoY");
                 Y.innerHTML = d3.event.y;
             var name = document.getElementById("name");
                 name.innerHTML = d.art_name;
            // console.log(name, d3.event.x, d3.event.y)

         }
     }

    dynamicRectangles()

【问题讨论】:

  • 我想我已经处理了你正在处理的问题。尝试使用具有空格的包装 div 围绕轴:无包装。在答案中发布我的旋转轴的 css。这绝不是一个真正的答案。

标签: javascript d3.js scale translate cartesian-coordinates


【解决方案1】:
.yAxisWrapper {
   float: left;
   white-space: nowrap;
}

.yAxisLabel {
   width: 20px;
   height: 20px;
   -webkit-transform: rotate(-90deg);
   -moz-transform: rotate(-90deg); -ms-transform: rotate(-90deg); 
   -o-transform: rotate(-90deg); 
   position: relative; 
   top: 100px;
}

【讨论】:

  • 哦,好吧,我知道你在那里做了什么。我会试试看。
猜你喜欢
  • 2017-07-30
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多