程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了需要隐藏或删除 d3 图表中的替代 x 轴值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_944_0@如何解决需要隐藏或删除 d3 图表中的替代 x 轴值? 开发过程中遇到需要隐藏或删除 d3 图表中的替代 x 轴值的问题如何解决?下面主要结合日常开发的经验,给出你关于需要隐藏或删除 d3 图表中的替代 x 轴值的解决方法建议,希望对你解决需要隐藏或删除 d3 图表中的替代 x 轴值有所启发或帮助;

在 x 轴上,我只需要显示诸如 - 0.5、1.5、2.5、3.5 之类的值并隐藏/删除其他值标签(0.0、1.0、2.0 等)。我使用的是 D3 v3。

图表输出应如下图所示

@H_674_7@@H_674_7@需要隐藏或删除 d3 图表中的替代 x 轴值

这是代码:

var data = [{
    label: "Data Set 1",x: [0,1,2,3,4],y: [0,4]
  },{
    label: "Data Set 2",4,9,16]
  }
];
var xy_chart = d3_xy_chart()
  .wIDth(960)
  .height(500)
  .xlabel("X Axis")
  .ylabel("Y Axis");
var svg = d3.SELEct("body").append("svg")
  .datum(data)
  .call(xy_chart);

function d3_xy_chart() {
  var wIDth = 640,height = 480,xlabel = "X Axis Label",ylabel = "Y Axis Label";

  function chart(SELEction) {
    SELEction.each(function(datasets) {
      //
      // Create the plot. 
      //
      var margin = {
          top: 20,right: 80,bottom: 30,left: 50
        },innerwIDth = wIDth - margin.left - margin.right,innerheight = height - margin.top - margin.bottom;

      var x_scale = d3.scale.linear()
        .range([0,innerwIDth])
        .domain([d3.min(datasets,function(d) {
            return d3.min(d.X);
          }),d3.max(datasets,function(d) {
            return d3.max(d.X);
          })
        ]);

      var y_scale = d3.scale.linear()
        .range([innerheight,0])
        .domain([d3.min(datasets,function(d) {
            return d3.min(d.y);
          }),function(d) {
            return d3.max(d.y);
          })
        ]);

      var color_scale = d3.scale.category10()
        .domain(d3.range(datasets.length));

      var x_axis = d3.svg.axis()
        .scale(x_scalE)
        .orIEnt("bottom");

      var y_axis = d3.svg.axis()
        .scale(y_scalE)
        .orIEnt("left");

      var x_grID = d3.svg.axis()
        .scale(x_scalE)
        .orIEnt("bottom")
        .tickSize(-innerheight)
        .tickFormat("");

      var y_grID = d3.svg.axis()
        .scale(y_scalE)
        .orIEnt("left")
        .tickSize(-innerwIDth)
        .tickFormat("");

      var draw_line = d3.svg.line()
        .interpolate("basis")
        .x(function(d) {
          return x_scale(d[0]);
        })
        .y(function(d) {
          return y_scale(d[1]);
        });

      var svg = d3.SELEct(this)
        .attr("wIDth",wIDth)
        .attr("height",height)
        .append("g")
        .attr("transform","translate(" + margin.left + "," + margin.top + ")");

      svg.append("g")
        .attr("class","x grID")
        .attr("transform","translate(0," + innerheight + ")")
        .call(x_grID);

      svg.append("g")
        .attr("class","y grID")
        .call(y_grID);

      svg.append("g")
        .attr("class","x axis")
        .attr("transform"," + innerheight + ")")
        .call(x_axis)
        .append("text")
        .attr("dy","-.71em")
        .attr("x",innerwIDth)
        .style("text-anchor","end")
        .text(xlabel);

      svg.append("g")
        .attr("class","y axis")
        .call(y_axis)
        .append("text")
        .attr("transform","rotate(-90)")
        .attr("y",6)
        .attr("dy","0.71em")
        .style("text-anchor","end")
        .text(ylabel);

      var data_lines = svg.SELEctAll(".d3_xy_chart_line")
        .data(datasets.map(function(d) {
          return d3.zip(d.x,d.y);
        }))
        .enter().append("g")
        .attr("class","d3_xy_chart_line");

      data_lines.append("path")
        .attr("class","line")
        .attr("d",function(d) {
          return draw_line(d);
        })
        .attr("stroke",function(_,i) {
          return color_scale(i);
        });

      data_lines.append("text")
        .datum(function(d,i) {
          return {
            name: datasets[i].label,final: d[d.length - 1]
          };
        })
        .attr("transform",function(d) {
          return ("translate(" + x_scale(d.final[0]) + "," +
            y_scale(d.final[1]) + ")");
        })
        .attr("x",3)
        .attr("dy",".35em")
        .attr("fill",i) {
          return color_scale(i);
        })
        .text(function(d) {
          return d.name;
        });

    });
  }

  chart.wIDth = function(value) {
    if (!arguments.length) return wIDth;
    wIDth = value;
    return chart;
  };

  chart.height = function(value) {
    if (!arguments.length) return height;
    height = value;
    return chart;
  };

  chart.xlabel = function(value) {
    if (!arguments.length) return xlabel;
    xlabel = value;
    return chart;
  };

  chart.ylabel = function(value) {
    if (!arguments.length) return ylabel;
    ylabel = value;
    return chart;
  };

  return chart;
}
body {
  Font: 10px sans-serif;
}

.axis path,.axis line {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}

.grID path,.grID line {
  fill: none;
  stroke: rgba(0,0.25);
  shape-rendering: crispEdges;
}

.x.axis path {
  display: none;
}

.line {
  fill: none;
  stroke-wIDth: 2.5px;
}

@H_944_0@解决方法

使用 tickValues 和余数运算符来检查整数:

.tickFormat(d => d%1 ? d : null);

这是更改后的代码:

var data = [{
    label: "Data Set 1",x: [0,1,2,3,4],y: [0,4]
  },{
    label: "Data Set 2",4,9,16]
  }
];
var xy_chart = d3_xy_chart()
  .width(960)
  .height(500)
  .xlabel("X Axis")
  .ylabel("Y Axis");
var svg = d3.SELEct("body").append("svg")
  .datum(data)
  .call(xy_chart);

function d3_xy_chart() {
  var width = 640,height = 480,xlabel = "X Axis Label",ylabel = "Y Axis Label";

  function chart(SELEction) {
    SELEction.each(function(datasets) {
      //
      // Create the plot. 
      //
      var margin = {
          top: 20,right: 80,bottom: 30,left: 50
        },innerwidth = width - margin.left - margin.right,innerheight = height - margin.top - margin.bottom;

      var x_scale = d3.scale.linear()
        .range([0,innerwidth])
        .domain([d3.min(datasets,function(d) {
            return d3.min(d.X);
          }),d3.max(datasets,function(d) {
            return d3.max(d.X);
          })
        ]);

      var y_scale = d3.scale.linear()
        .range([innerheight,0])
        .domain([d3.min(datasets,function(d) {
            return d3.min(d.y);
          }),function(d) {
            return d3.max(d.y);
          })
        ]);

      var color_scale = d3.scale.category10()
        .domain(d3.range(datasets.length));

      var x_axis = d3.svg.axis()
        .scale(x_scalE)
        .orient("bottom")
        .tickFormat(d => d % 1 ? d : null);

      var y_axis = d3.svg.axis()
        .scale(y_scalE)
        .orient("left");

      var x_grid = d3.svg.axis()
        .scale(x_scalE)
        .orient("bottom")
        .tickSize(-innerheight)
        .tickFormat("");

      var y_grid = d3.svg.axis()
        .scale(y_scalE)
        .orient("left")
        .tickSize(-innerwidth)
        .tickFormat("");

      var draw_line = d3.svg.line()
        .interpolate("basis")
        .x(function(d) {
          return x_scale(d[0]);
        })
        .y(function(d) {
          return y_scale(d[1]);
        });

      var svg = d3.SELEct(this)
        .attr("width",width)
        .attr("height",height)
        .append("g")
        .attr("transform","translate(" + margin.left + "," + margin.top + ")");

      svg.append("g")
        .attr("class","x grid")
        .attr("transform","translate(0," + innerheight + ")")
        .call(x_grid);

      svg.append("g")
        .attr("class","y grid")
        .call(y_grid);

      svg.append("g")
        .attr("class","x axis")
        .attr("transform"," + innerheight + ")")
        .call(x_axis)
        .append("text")
        .attr("dy","-.71em")
        .attr("x",innerwidth)
        .style("text-anchor","end")
        .text(xlabel);

      svg.append("g")
        .attr("class","y axis")
        .call(y_axis)
        .append("text")
        .attr("transform","rotate(-90)")
        .attr("y",6)
        .attr("dy","0.71em")
        .style("text-anchor","end")
        .text(ylabel);

      var data_lines = svg.SELEctAll(".d3_xy_chart_line")
        .data(datasets.map(function(d) {
          return d3.zip(d.x,d.y);
        }))
        .enter().append("g")
        .attr("class","d3_xy_chart_line");

      data_lines.append("path")
        .attr("class","line")
        .attr("d",function(d) {
          return draw_line(d);
        })
        .attr("stroke",function(_,i) {
          return color_scale(i);
        });

      data_lines.append("text")
        .datum(function(d,i) {
          return {
            name: datasets[i].label,final: d[d.length - 1]
          };
        })
        .attr("transform",function(d) {
          return ("translate(" + x_scale(d.final[0]) + "," +
            y_scale(d.final[1]) + ")");
        })
        .attr("x",3)
        .attr("dy",".35em")
        .attr("fill",i) {
          return color_scale(i);
        })
        .text(function(d) {
          return d.name;
        });

    });
  }

  chart.width = function(value) {
    if (!arguments.length) return width;
    width = value;
    return chart;
  };

  chart.height = function(value) {
    if (!arguments.length) return height;
    height = value;
    return chart;
  };

  chart.xlabel = function(value) {
    if (!arguments.length) return xlabel;
    xlabel = value;
    return chart;
  };

  chart.ylabel = function(value) {
    if (!arguments.length) return ylabel;
    ylabel = value;
    return chart;
  };

  return chart;
}
body {
  font: 10px sans-serif;
}

.axis path,.axis line {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}

.grid path,.grid line {
  fill: none;
  stroke: rgba(0,0.25);
  shape-rendering: crispEdges;
}

.x.axis path {
  display: none;
}

.line {
  fill: none;
  stroke-width: 2.5px;
}
<script src="https://cdnjs.cloudFlare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>

大佬总结

以上是大佬教程为你收集整理的需要隐藏或删除 d3 图表中的替代 x 轴值全部内容,希望文章能够帮你解决需要隐藏或删除 d3 图表中的替代 x 轴值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:d3x轴值