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

数学.随机()-设置从最小到最大的范围[重复]

  •  1
  • smoore4  · 技术社区  · 6 年前

    enter image description here

    我把英文单词“Tickets”定在160像素。如何设置非英语单词的最小大小(例如32个)?我正在使用d3.js和数学.随机().

    var languages = [{"text":"Tickets"},{"text":"Fahrkarten"},{"text":"Entradas"},{"text":"Billets"},{"text":"Biglietti"},{"text":"チケット"},{"text":"티켓"},{"text":"Bilhetes"},{"text":"门票"},{"text":"門票"}];
    
    var eases = [d3.easeExp,d3.easeSin,d3.easeLinear,d3.easeCubic];
    
    var easesItem = eases[Math.floor(Math.random()*eases.length)];
    
    console.log(easesItem);
    
    var color = d3.scaleLinear()
            .domain([0,1,2,3,4,5,6,10,15,20,100])
            .range(["#000000", "#2F4F4F", "#708090", "#778899", "#808080", "#696969", "#A9A9A9", "#C0C0C0", "#D3D3D3", "#DCDCDC"]);
    
    var layout = d3.layout.cloud()
        .size([1020, 1980])
        .words(languages)
        .padding(5)
        .rotate(function() { return ~~(Math.random() * 2) * 90; })
        .font("MoMA Sans Office")
        .fontSize(function(d) { if(d.text === 'Tickets') { return 160; } else { return 10 + Math.random() * 160; } })
        .on("end", draw);
    
    layout.start();
    

    注意:屏幕每5秒更改一次,单词以随机顺序、颜色和大小显示,但英文单词“Ticket”的颜色和顺序是随机的,但始终是160px。我希望避免使用很小的字眼。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Poul Bak    6 年前

    我想这条线 fontsize :

    .fontSize(function(d) { if(d.text === 'Tickets') { return 160; } else { return 10 + Math.random() * 160; } })
    

    您希望最小大小为32:

    .fontSize(function(d) { if(d.text === 'Tickets') { return 160; } else { return 32 + Math.random() * (160 - 32); } })
    

    这应该将最小fontsize设置为32,最大fontsize设置为160。