簡體   English   中英

標簽在x軸上的旋轉變換

[英]Rotation transformation of labels on x-axis

您好我有這個視覺效果: https : //plnkr.co/edit/H6M1xoS9cZv5dKCTIyid?p=preview

我正在嘗試旋轉x軸的標簽,並嘗試將第299-317行中的代碼修改為無用-因此我感覺到諸如.attr("transform", "rotate(-65)" ); 需要添加以下內容?

// Add x labels to chart
var xLabels = svg
  .append("g")
  .attr("transform", "translate(" + margin.left + "," + (margin.top + height) + ")");

xLabels.selectAll("text.xAxis")
  .data(BarData)
  .enter()
  .append("text")
  .text(function(d) {
    return d.dt;
  })
  .attr("text-anchor", "middle")
  // Set x position to the left edge of each bar plus half the bar width
  .attr("x", function(d, i) {
    return (i * (width / BarData.length)) + ((width / BarData.length - barPadding) / 2);
  })
  .attr("y", 15)
  .attr("class", "xAxis")

您的問題是您正在使用.attr("x"來定位軸文本。您應該使用平移來執行此操作,否則旋轉將使所有元素從左下角旋轉。

代碼應如下所示,平移和旋轉應在同一變換函數中進行:

.attr("transform", function (d, i) {
    return "translate("
      + ((i * (width / BarData.length)) + ((width / BarData.length - barPadding) / 2))
      + ", 0) rotate(-65)";
})

這是您的朋克的工作版本: https ://plnkr.co/edit/UqwtLqTn6iJ2XS012Vr4 ? p = preview

希望這可以幫助。

借助鏈接幫助,我最終使用了以下代碼:

xLabels.selectAll("text.xAxis")
  .data(BarData)
  .enter()
  .append("text")
  .text(function(d) {
    return d.dt;
  })
  .attr({
    'text-anchor': "middle",
    transform: function(d, i) {
      var x = (i * (width / BarData.length)) + ((width / BarData.length - barPadding) / 2);
      var y = 20;
      return 'translate(' + x + ',' + y + ')rotate(-90)';
    },
    dy: "0.35em",
    'class': "xAxis"
  })

這里的示例: https : //plnkr.co/edit/3d5UhM?p=preview

我還添加了屬性dy: "0.35em"以將標簽完全居中於每個條形。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM