Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Json Daives';D3字云_Javascript_R_D3.js_Shiny_Word Cloud - Fatal编程技术网

Javascript 如何使用Json Daives';D3字云

Javascript 如何使用Json Daives';D3字云,javascript,r,d3.js,shiny,word-cloud,Javascript,R,D3.js,Shiny,Word Cloud,我在R中使用Json Daives的D3单词云。我已经生成了单词云,但我面临的问题是单词云的形状不是圆形的。我正在查看d3.layout.cloud.js文件,试图修改代码以实现这一点,但没有成功。该文件有一个名为“place”的函数,用于定义云的形状。但我不知道如何修改此函数以实现圆形。还有其他人尝试过实现这种循环表示吗?我正在粘贴下面位置函数的代码 function place(board, tag, bounds) { var perimeter = [{x: 0, y: 0}, {x

我在R中使用Json Daives的D3单词云。我已经生成了单词云,但我面临的问题是单词云的形状不是圆形的。我正在查看d3.layout.cloud.js文件,试图修改代码以实现这一点,但没有成功。该文件有一个名为“place”的函数,用于定义云的形状。但我不知道如何修改此函数以实现圆形。还有其他人尝试过实现这种循环表示吗?我正在粘贴下面位置函数的代码

function place(board, tag, bounds) {
  var perimeter = [{x: 0, y: 0}, {x: size[0], y: size[1]}],
      startX = tag.x,
      startY = tag.y,
      maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),
      s = spiral(size),
      dt = Math.random() < .5 ? 1 : -1,
      t = -dt,
      dxdy,
      dx,
      dy;

  while (dxdy = s(t += dt)) {
    dx = ~~dxdy[0];
    dy = ~~dxdy[1];

    if (Math.min(dx, dy) > maxDelta) break;

    tag.x = startX + dx;
    tag.y = startY + dy;

    if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 ||
        tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;
    // TODO only check for collisions within current bounds.
    if (!bounds || !cloudCollide(tag, board, size[0])) {
      if (!bounds || collideRects(tag, bounds)) {
        var sprite = tag.sprite,
            w = tag.width >> 5,
            sw = size[0] >> 5,
            lx = tag.x - (w << 4),
            sx = lx & 0x7f,
            msx = 32 - sx,
            h = tag.y1 - tag.y0,
            x = (tag.y + tag.y0) * sw + (lx >> 5),
            last;
        for (var j = 0; j < h; j++) {
          last = 0;
          for (var i = 0; i <= w; i++) {
            board[x + i] |= (last << msx) | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);
          }
          x += sw;
        }
        delete tag.sprite;
        return true;
      }
    }
  }
  return false;
}
功能位置(板、标签、边界){
变量周长=[{x:0,y:0},{x:size[0],y:size[1]}],
startX=tag.x,
startY=tag.y,
maxDelta=Math.sqrt(大小[0]*大小[0]+大小[1]*大小[1]),
s=螺旋线(尺寸),
dt=数学随机数()<.5?1:-1,
t=-dt,
dxdy,
dx,
dy;
而(dxdy=s(t+=dt)){
dx=~~dxdy[0];
dy=~~dxdy[1];
如果(数学最小值(dx,dy)>最大增量)中断;
tag.x=startX+dx;
tag.y=星状+dy;
如果(tag.x+tag.x0<0 | | tag.y+tag.y0<0||
tag.x+tag.x1>大小[0]| | tag.y+tag.y1>大小[1])继续;
//TODO仅检查当前边界内的冲突。
如果(!bounds | |!cloudCollide(标记、板、大小[0])){
如果(!bounds | | collide rects(标记,边界)){
var sprite=tag.sprite,
w=标签宽度>>5,
sw=尺寸[0]>>5,
lx=标签x-(w>5),
最后;
对于(var j=0;jsx:0);
}
x+=sw;
}
删除tag.sprite;
返回true;
}
}
}
返回false;
}
查看此项