json文件
[
{
"year": "2008",
"directors": [
{
"text": "张建亚 Jianya Zhang",
"size": "3"
},
{
"text": "徐克 Hark Tsui",
"size": "2"
},
{
"text": "林超贤 Dante Lam",
"size": "2"
},
{
"text": "马俪文 Liwen Ma",
"size": "2"
},
{
"text": "马楚成 Jingle Ma",
"size": "2"
},
{
"text": "Gehe Zhuo",
"size": "1"
},
{
"text": "Robert Vicencio",
"size": "1"
},
{
"text": "丁晟 Sheng Ding",
"size": "1"
},
{
"text": "乔粱 Liang Qiao",
"size": "1"
},
{
"text": "侯咏 Yong Hou",
"size": "1"
}
]
},
{
"year": "2009",
"directors": [
{
"text": "Mingkai Hu邓衍成 Billy Tang",
"size": "3"
},
{
"text": "王晶 Jing Wong",
"size": "2"
},
{
"text": "管虎 Hu Guan",
"size": "2"
},
{
"text": "Shimon Dotan",
"size": "1"
},
{
"text": "Xiaobo Zhang",
"size": "1"
},
{
"text": "丁荫楠 Yinnan Ding",
"size": "1"
},
{
"text": "万玛才旦 Pema Tseden",
"size": "1"
},
{
"text": "书亚 Ya Shu高天 Tian Gao",
"size": "1"
},
{
"text": "何平 Ping He",
"size": "1"
},
{
"text": "佛罗瑞·加仑伯格 Florian Gallenberger",
"size": "1"
}
]
},
{
"year": "2010",
"directors": [
{
"text": "阿甘 Agan",
"size": "3"
},
{
"text": "Mingkai Hu",
"size": "2"
},
{
"text": "冯小刚 Xiaogang Feng",
"size": "2"
},
{
"text": "刘镇伟 Jeffrey Lau",
"size": "2"
},
{
"text": "宁瀛 Ying Ning",
"size": "2"
},
{
"text": "林超贤 Dante Lam",
"size": "2"
},
{
"text": "王晶 Jing Wong",
"size": "2"
},
{
"text": "Xinyi Liu",
"size": "1"
},
{
"text": "丁晟 Sheng Ding",
"size": "1"
},
{
"text": "余乐 Le Yu",
"size": "1"
}
]
},
{
"year": "2011",
"directors": [
{
"text": "叶伟信 Wilson Yip",
"size": "2"
},
{
"text": "彭顺 Oxide Pang Chun",
"size": "2"
},
{
"text": "闫然 Ran Yan",
"size": "2"
},
{
"text": "陈力 Li Chen",
"size": "2"
},
{
"text": "马楚成 Jingle Ma",
"size": "2"
},
{
"text": "麦兆辉 Alan Mak庄文强 Felix Chong",
"size": "2"
},
{
"text": "Dahang Wei",
"size": "1"
},
{
"text": "Wayne Wang",
"size": "1"
},
{
"text": "丁小明 Xiaoming Ding",
"size": "1"
},
{
"text": "丁晟 Sheng Ding赵海城 Haicheng Zhao",
"size": "1"
}
]
},
{
"year": "2012",
"directors": [
{
"text": "潘镜丞 Jingcheng Pan",
"size": "3"
},
{
"text": "冯德伦 Stephen Fung",
"size": "2"
},
{
"text": "卢卫国 Weiguo Lu",
"size": "2"
},
{
"text": "叶伟民 Waiman Yip",
"size": "2"
},
{
"text": "周耀武 Yaowu Zhou",
"size": "2"
},
{
"text": "安战军 Zhanjun An",
"size": "2"
},
{
"text": "安澜 Lan An",
"size": "2"
},
{
"text": "李克龙 Kelong Li",
"size": "2"
},
{
"text": "杨子 Larry Yang",
"size": "2"
},
{
"text": "王晶 Jing Wong",
"size": "2"
}
]
},
{
"year": "2013",
"directors": [
{
"text": "Yanting Li",
"size": "2"
},
{
"text": "傅华阳 Huayang Fu",
"size": "2"
},
{
"text": "关尔 Er Guan",
"size": "2"
},
{
"text": "刘一君 Yijun Liu",
"size": "2"
},
{
"text": "宁敬武 Ning Jingwu",
"size": "2"
},
{
"text": "宁海强 Haiqiang Ning",
"size": "2"
},
{
"text": "张力 Li Zhang",
"size": "2"
},
{
"text": "徐克 Xu Ke",
"size": "2"
},
{
"text": "杜琪峰 Johnnie To",
"size": "2"
},
{
"text": "杜鹏 Peng Du",
"size": "2"
}
]
},
{
"year": "2014",
"directors": [
{
"text": "刘镇伟 Jeffrey Lau",
"size": "4"
},
{
"text": "马雍 Yong Ma",
"size": "3"
},
{
"text": "刘宁 Ning Liu",
"size": "2"
},
{
"text": "彭浩翔 Ho-Cheung Pang",
"size": "2"
},
{
"text": "朱赵伟 Zhaowei Zhu",
"size": "2"
},
{
"text": "林晓丽 Lin Xiaoli",
"size": "2"
},
{
"text": "欧阳奋强 Fenqiang Ouyang",
"size": "2"
},
{
"text": "沈乐平 ChenLeBeng",
"size": "2"
},
{
"text": "袁杰 Jie Yuan",
"size": "2"
},
{
"text": "路阳 Yang Lu",
"size": "2"
}
]
},
{
"year": "2015",
"directors": [
{
"text": "海涛 Tao Hai",
"size": "6"
},
{
"text": "宁敬武 Ning Jingwu",
"size": "3"
},
{
"text": "Tao Li",
"size": "2"
},
{
"text": "叶念琛 Patrick Kong",
"size": "2"
},
{
"text": "安澜 Lan An",
"size": "2"
},
{
"text": "张艺飞 Yifei Zhang",
"size": "2"
},
{
"text": "彭发 Danny Pang",
"size": "2"
},
{
"text": "徐正超 ZhengChao Xu",
"size": "2"
},
{
"text": "朱赵伟 Zhaowei Zhu",
"size": "2"
},
{
"text": "李凯 Kai Li",
"size": "2"
}
]
},
{
"year": "2016",
"directors": [
{
"text": "赵小溪 Xiaoxi Zhao",
"size": "3"
},
{
"text": "黄军 Jun Huang",
"size": "3"
},
{
"text": "周晓鹏 Xiaopeng Zhou",
"size": "2"
},
{
"text": "崔志敏 Zhimin Cui",
"size": "2"
},
{
"text": "摩撒利 Sa-li Mo",
"size": "2"
},
{
"text": "程中豪 Zhonghao Cheng王凯 Kai Wang",
"size": "2"
},
{
"text": "郑成峰 Chengfeng Zheng",
"size": "2"
},
{
"text": "郭大雷 Zorro",
"size": "2"
},
{
"text": "马宁 Ning Ma",
"size": "2"
},
{
"text": "高峰 Feng Gao",
"size": "2"
}
]
},
{
"year": "2017",
"directors": [
{
"text": "陆诗雷 Shilei Lu",
"size": "4"
},
{
"text": "朱江华 Jianghua Zhu",
"size": "3"
},
{
"text": "王良 Liang Wang",
"size": "3"
},
{
"text": "刘艳杰 Yanjie Liu",
"size": "2"
},
{
"text": "刘镇伟 Jeffrey Lau",
"size": "2"
},
{
"text": "夏钢 Gang Xia",
"size": "2"
},
{
"text": "张杨 Yang Zhang",
"size": "2"
},
{
"text": "张艺飞 Yifei Zhang",
"size": "2"
},
{
"text": "徐艺华 Yihua Xu",
"size": "2"
},
{
"text": "王择谚 Ze-yan Wang",
"size": "2"
}
]
},
{
"year": "2018",
"directors": [
{
"text": "刘江 Jiang Liu",
"size": "2"
},
{
"text": "张艺谋 Yimou Zhang",
"size": "2"
},
{
"text": "徐超 Chao Xu",
"size": "2"
},
{
"text": "朱丹 Dan Zhu",
"size": "2"
},
{
"text": "袁晓满 Xiaoman Yuan",
"size": "2"
},
{
"text": "赵宝刚 Baogang Zhao王迎 Ying Wang",
"size": "2"
},
{
"text": "陈设 Chen She",
"size": "2"
},
{
"text": "Zhangxiang Zhao",
"size": "1"
},
{
"text": "丁亮 Liang Ding林汇达 Huida Lin",
"size": "1"
},
{
"text": "丁仕昀 Shiyun Ding",
"size": "1"
}
]
}
]
代码部分
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>WordcloudLayout</title>
<script type='text/javascript' src='js/d3_v7.js'></script>
<script src='js/d3.layout.cloud.js'></script>
</head>
<body>
<script type='text/javascript'>
function updateDraw(year,flat) {
d3.json('js/词云.json').then(function (data) {
if(flat==true) d3.select("body").select("svg").remove();//更新词云图
let svg = d3.select('body').append('svg').attr("width", 500).attr("height", 500)
let fill = d3.scaleOrdinal(d3.schemeCategory10)
let layout = d3.layout.cloud() //注意,这不是D3自带的API,是d3.layout.cloud.js中的API
.size([500, 500])
.words(data[year-2008]["directors"])
.padding(5) //每个词之间的间隔,不设置时默认为0
.rotate(function () {
return ~(Math.random() * 90)
})
.font('Impact')
.fontSize(d => d.size * 15)
.on('end', draw)
let wordcloudGroup = svg.append('g')
.attr('transform', `translate(${layout.size()[0] / 2} ,${layout.size()[1] / 2})`)
layout.start()
function draw(words) {
wordcloudGroup.selectAll('text')
.data(words)
.enter().append('text')
.attr('font-size', d => `${d.size}px`)
.attr('font-family', 'Impact')
.attr('fill', (d, i) => fill(i))
.attr('text-anchor', 'middle')
.attr('transform', d => `translate(${d.x}, ${d.y}) rotate(${d.rotate})`)
.text(d => d.text)
}
})
}
updateDraw(2008,false)//开始默认为2008年的词云图
function myChoice(year)
{
updateDraw(year,true)
}
// myChoice(2011)
</script>
</body>
</html>
效果展示