我是d3.js的新手。在这里,我试图使用d3.v3.js库绘制条形图。在这里,我面临的问题很少。我试图将测量标签包含在y轴上。但是一旦我将标签转换为-90度,它的位置就会自动改变。
以下是我习惯绘制的代码:
svg.append("g")
.attr("id","x_axis")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", "rotate(-65)");
// .attr("transform", "translate(" + bandSize + ", 0)")
svg.append("g")
.attr("class", "x axis")
.attr("id","dimLabel")
.append("text")
.style("text-anchor", "end")
.attr("x", width/2)
.attr("y", height+55)
.text(dimensionLabels[0]);
svg.append("g")
.attr("id","y_axis1")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("class", "label")
//.attr("transform", "rotate(-90)")
.attr("y", function(d){return y(d3.max(data, function(d) { return d.Metric1; }));});
//Measure Labels
svg.append("g")
.attr("class", "y axis")
.attr("id","measureLabels")
.append("text")
.style("text-anchor", "end")
.attr("x", 0)
.attr("y", height/2)
.text(measureLabels[0]+", "+measureLabels[1])
.attr("transform", "rotate(-90)");
输出图片:
非常感谢任何帮助。
答案 0 :(得分:2)
您现在看到的是预期结果,因为rotate
属性的transform
函数会围绕原点(0,0)旋转元素,而不是围绕其中心。
最简单的解决方案是放弃attr("x")
和attr("y")
并使用相同的transform
定位文字:
var width = 300,
height = 300;
var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
var text = svg.append("text")
.text("Sum (sales), Sum (quantity)")
.attr("text-anchor", "middle")
.attr("transform", "translate(20," + (height / 2) + ") rotate(-90)")

svg {
border: 1px solid gray;
}

<script src="https://d3js.org/d3.v3.min.js"></script>
&#13;
另一种解决方案是将rotate
的中心设置为相同的x
和y
值:
var width = 300,
height = 300;
var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
var text = svg.append("text")
.text("Sum (sales), Sum (quantity)")
.attr("text-anchor", "middle")
.attr("x", 20)
.attr("y", 150)
.attr("transform", "rotate(-90, 20, 150)")
&#13;
svg {
border: 1px solid gray;
}
&#13;
<script src="https://d3js.org/d3.v3.min.js"></script>
&#13;
答案 1 :(得分:0)
我认为您正在寻找css属性transform-origin
https://www.w3schools.com/cssref/css3_pr_transform-origin.asp