Math.random()-设置最小到最大范围

时间:2018-09-15 16:00:52

标签: javascript d3.js

我正在创建一个像这样的词云:

enter image description here

我的英语单词“ Tickets”固定为160px。如何设置非英语单词的最小大小(例如32)?我正在使用d3.js和Math.random()。

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 个答案:

答案 0 :(得分:0)

我假设此行设置了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); } })

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