代码之家  ›  专栏  ›  技术社区  ›  Stefan

精心策划。js:如何避免轮廓线重叠?

  •  1
  • Stefan  · 技术社区  · 8 年前

    下面是使用plotly.js创建等高线图的示例。一些 等高线重叠 .

    如何更改策略设置以避免这种情况(例如增加 决议 转换 轮廓算法 )? 如果我使用conrec绘制相同的数据。js轮廓不重叠。

    A、 Conrec.js公司 (此操作有效,无重叠)

    enter image description here

    示例的源代码: https://github.com/jasondavies/conrec.js/tree/master/example

    B、 Plotly.js(打印.js) (不起作用:重叠轮廓)

    enter image description here

    示例的源代码: https://jsfiddle.net/jwmdw3o1/

    资源:

    https://cdn.plot.ly/plotly-latest.min.js

    https://github.com/mbostock/d3/raw/v1.10.1/d3.js

    Html:

    <div id="graph"></div>
    

    JavaScript语言:

    var zData = createData();
    var xData = d3.range(0, zData.length);
    var yData = d3.range(0, zData[0].length);
    
    var data = [ {
      z: zData,
      x: xData,
      y: yData,
      type: 'contour',  
      colorscale: 'Jet',
      showscale: false,
      autocontour: false,  
      contours: {
        start: -5,
        end: 3,
        size: 0.5
      }
    }];
    
    var layout = {
    margin: {
    b: 0,
    l: 0,
    r: 0,
    t: 0
    },
    height: 600,
    width: 600,
      title: '',
      xaxis: {
            ticks: '',
          showticklabels: false  
    
      },
      yaxis: {
           ticks: '',
           showticklabels: false     
      } 
    };
    
    Plotly.newPlot('graph', data, layout, {displayModeBar: false});
    
    function createData(){
    var data = [
      [
        0.4, 
        0.4, 
        0.7, 
        -1.0, 
        -0.1, 
        0.6, 
        -0.4, 
        0.6, 
        -0.4, 
        1.3, 
        0.7, 
        -0.4, 
        1.1, 
        1.3, 
        0.6, 
        0.1, 
        -0.0, 
        -0.8, 
        -0.8, 
        -1.0
      ], 
      [
        0.4, 
        -0.4, 
        0.4, 
        -1.2, 
        -0.7, 
        0.4, 
        -0.9, 
        0.5, 
        -0.9, 
        1.2, 
        0.5, 
        -1.0, 
        1.3, 
        1.1, 
        0.5, 
        -0.0, 
        -0.1, 
        -1.2, 
        -1.0, 
        -0.9
      ], 
      [
        0.7, 
        0.4, 
        0.1, 
        -1.2, 
        -0.2, 
        0.5, 
        -0.6, 
        0.6, 
        -0.2, 
        0.9, 
        0.6, 
        -0.5, 
        1.1, 
        0.8, 
        0.6, 
        0.1, 
        -0.4, 
        -0.9, 
        -0.7, 
        -0.8
      ], 
      [
        -1.0, 
        -1.2, 
        -1.2, 
        -4.4, 
        -1.9, 
        -0.8, 
        -2.2, 
        -1.0, 
        -2.2, 
        0.0, 
        -0.3, 
        -2.0, 
        -0.2, 
        0.2, 
        -0.8, 
        -1.6, 
        -1.9, 
        -2.4, 
        -2.3, 
        -2.6
      ], 
      [
        -0.1, 
        -0.7, 
        -0.2, 
        -1.9, 
        -2.0, 
        -0.5, 
        -1.9, 
        -0.3, 
        -1.7, 
        0.4, 
        -0.2, 
        -1.9, 
        0.3, 
        0.4, 
        -0.3, 
        -0.8, 
        -0.9, 
        -2.1, 
        -1.8, 
        -2.0
      ], 
      [
        0.6, 
        0.4, 
        0.5, 
        -0.8, 
        -0.5, 
        -0.1, 
        -0.8, 
        0.6, 
        -0.5, 
        1.0, 
        0.5, 
        -0.7, 
        0.8, 
        1.0, 
        0.5, 
        0.1, 
        -0.3, 
        -0.9, 
        -0.7, 
        -1.1
      ], 
      [
        -0.4, 
        -0.9, 
        -0.6, 
        -2.2, 
        -1.9, 
        -0.8, 
        -2.7, 
        -0.6, 
        -2.0, 
        0.3, 
        -0.3, 
        -2.3, 
        -0.0, 
        -0.0, 
        -0.6, 
        -1.1, 
        -1.3, 
        -2.4, 
        -2.0, 
        -2.2
      ], 
      [
        0.6, 
        0.5, 
        0.6, 
        -1.0, 
        -0.3, 
        0.6, 
        -0.6, 
        0.1, 
        -0.8, 
        1.3, 
        0.8, 
        -0.8, 
        1.1, 
        1.3, 
        0.4, 
        0.1, 
        0.1, 
        -0.8, 
        -1.0, 
        -1.0
      ], 
      [
        -0.4, 
        -0.9, 
        -0.2, 
        -2.2, 
        -1.7, 
        -0.5, 
        -2.0, 
        -0.8, 
        -2.9, 
        0.3, 
        -0.4, 
        -2.2, 
        -0.0, 
        -0.0, 
        -0.7, 
        -0.7, 
        -1.3, 
        -2.4, 
        -2.1, 
        -2.6
      ], 
      [
        1.3, 
        1.2, 
        0.9, 
        0.0, 
        0.4, 
        1.0, 
        0.3, 
        1.3, 
        0.3, 
        1.1, 
        1.0, 
        0.2, 
        0.7, 
        1.9, 
        0.9, 
        -0.2, 
        0.3, 
        0.1, 
        -0.4, 
        -0.2
      ], 
      [
        0.7, 
        0.5, 
        0.6, 
        -0.3, 
        -0.2, 
        0.5, 
        -0.3, 
        0.8, 
        -0.4, 
        1.0, 
        0.3, 
        -0.3, 
        1.0, 
        1.1, 
        0.6, 
        0.1, 
        0.3, 
        -0.7, 
        -0.5, 
        -0.6
      ], 
      [
        -0.4, 
        -1.0, 
        -0.5, 
        -2.0, 
        -1.9, 
        -0.7, 
        -2.3, 
        -0.8, 
        -2.2, 
        0.2, 
        -0.3, 
        -2.7, 
        0.0, 
        -0.0, 
        -0.6, 
        -1.0, 
        -1.1, 
        -2.3, 
        -2.1, 
        -2.4
      ], 
      [
        1.1, 
        1.3, 
        1.1, 
        -0.2, 
        0.3, 
        0.8, 
        -0.0, 
        1.1, 
        -0.0, 
        0.7, 
        1.0, 
        0.0, 
        1.6, 
        0.8, 
        1.0, 
        0.8, 
        0.7, 
        -0.2, 
        -0.2, 
        -0.2
      ], 
      [
        1.3, 
        1.1, 
        0.8, 
        0.2, 
        0.4, 
        1.0, 
        -0.0, 
        1.3, 
        -0.0, 
        1.9, 
        1.1, 
        -0.0, 
        0.8, 
        1.2, 
        1.1, 
        0.0, 
        0.2, 
        -0.1, 
        -0.4, 
        0.0
      ], 
      [
        0.6, 
        0.5, 
        0.6, 
        -0.8, 
        -0.3, 
        0.5, 
        -0.6, 
        0.4, 
        -0.7, 
        0.9, 
        0.6, 
        -0.6, 
        1.0, 
        1.1, 
        -0.2, 
        0.1, 
        -0.0, 
        -0.9, 
        -0.6, 
        -1.2
      ], 
      [
        0.1, 
        -0.0, 
        0.1, 
        -1.6, 
        -0.8, 
        0.1, 
        -1.1, 
        0.1, 
        -0.7, 
        -0.2, 
        0.1, 
        -1.0, 
        0.8, 
        0.0, 
        0.1, 
        -0.6, 
        -0.4, 
        -1.2, 
        -1.3, 
        -1.4
      ], 
      [
        -0.0, 
        -0.1, 
        -0.4, 
        -1.9, 
        -0.9, 
        -0.3, 
        -1.3, 
        0.1, 
        -1.3, 
        0.3, 
        0.3, 
        -1.1, 
        0.7, 
        0.2, 
        -0.0, 
        -0.4, 
        -1.3, 
        -1.4, 
        -1.6, 
        -1.9
      ], 
      [
        -0.8, 
        -1.2, 
        -0.9, 
        -2.4, 
        -2.1, 
        -0.9, 
        -2.4, 
        -0.8, 
        -2.4, 
        0.1, 
        -0.7, 
        -2.3, 
        -0.2, 
        -0.1, 
        -0.9, 
        -1.2, 
        -1.4, 
        -3.0, 
        -2.3, 
        -2.5
      ], 
      [
        -0.8, 
        -1.0, 
        -0.7, 
        -2.3, 
        -1.8, 
        -0.7, 
        -2.0, 
        -1.0, 
        -2.1, 
        -0.4, 
        -0.5, 
        -2.1, 
        -0.2, 
        -0.4, 
        -0.6, 
        -1.3, 
        -1.6, 
        -2.3, 
        -2.3, 
        -2.4
      ], 
      [
        -1.0, 
        -0.9, 
        -0.8, 
        -2.6, 
        -2.0, 
        -1.1, 
        -2.2, 
        -1.0, 
        -2.6, 
        -0.2, 
        -0.6, 
        -2.4, 
        -0.2, 
        0.0, 
        -1.2, 
        -1.4, 
        -1.9, 
        -2.5, 
        -2.4, 
        -3.3
      ]
    ];
    return data;
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Stefan    8 年前

    使用“平滑:0”调整线条选项可以解决此问题:

    var data = [ {
     ...
      line: {   
        smoothing: 0    
      }
      ...
    }];
    

    https://plot.ly/javascript/reference/#contour-line