07-詞雲、樹圖、矩形樹圖、關係圖
阿新 • • 發佈:2022-05-31
目錄
1. 詞雲worldcloud
1. 案例1
參考連結:https://www.isqqw.com/echartsdetail?id=20718
報錯:Component series.wordCloud not exists. Load it first.
原因:是echarts版本的問題,worldcloud只支援3.0版本,官網上都是4.0版本。
解決:下載echarts-wordcloud.min.js並引入。
下載連結:
<script src="https://www.guanacossj.com/static/js/echarts-wordcloud.min.js"></script> <script src="https://www.guanacossj.com/static/echarts-3/echarts.js"></script>
版權宣告:本文為CSDN博主「渣渣林」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_48736958/article/details/114281746
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>詞雲圖</title> </head> <body> <script src="js/echarts.js"></script> <script src="js/echarts-wordcloud.min.js"></script> <div id="box" style="height: 600px;width: 1200px"></div> <script> var myChart = echarts.init(document.getElementById('box')); let datas = [{ name: "雨傘", value: 30 }, { name: "晴天", value: 28 }, { name: "電話", value: 24 }, { name: "手機", value: 23 }, { name: "下雨", value: 22 }, { name: "暴雨", value: 21 }, { name: "多雲", value: 20 }, { name: "雨衣", value: 29 }, { name: "屋簷", value: 28 }, { name: "大風", value: 27 }, { name: "颱風", value: 26 }, { name: "下雪", value: 25 }, { name: "打雷", value: 24 }, { name: "小雨", value: 30 }, { name: "中雨", value: 18 }, { name: "大雨", value: 14 }, { name: "雷陣雨", value: 13 }, { name: "下雪", value: 12 }, { name: "小雪", value: 11 }, { name: "中雪", value: 10 }, { name: "大雪", value: 9 }, { name: "暴雪", value: 8 }, { name: "東風", value: 7 }, { name: "南風", value: 6 }, { name: "西北風", value: 5 }, { name: "北風", value: 4 }, { name: "閃電", value: 3 } ]; var option = { tooltip: { show: true, position: 'top', textStyle: { fontSize: 30 } }, series: [{ type: "wordCloud", // 網格大小,各項之間間距 gridSize: 60, // 形狀 circle 圓,cardioid 心, diamond 菱形, // triangle-forward 、triangle 三角,star五角星 shape: 'circle', // 字型大小範圍 sizeRange: [20, 70], // 文字旋轉角度範圍 rotationRange: [0, 0], // 旋轉步值 // rotationStep: 90, // 自定義圖形 // maskImage: maskImage, left: 'center', top: 'center', right: null, bottom: null, // 畫布寬 width: '90%', // 畫布高 height: '80%', // 是否渲染超出畫布的文字 drawOutOfBound: false, textStyle: { normal: { color: function () { return 'rgb(' + [ Math.round(Math.random() * 200 + 55), Math.round(Math.random() * 200 + 55), Math.round(Math.random() * 200 + 55) ].join(',') + ')'; } }, emphasis: { shadowBlur: 10, shadowColor: '#2ac' } }, data: datas }] }; myChart.setOption(option); </script> </body> </html>
執行結果:
2. 案例2
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>ECharts</title> <!-- 引入剛剛下載的 ECharts 檔案 --> <script src="js/echarts.js"></script> <script src="js/echarts-wordcloud.min.js"></script> </head> <body> <!-- 為 ECharts 準備一個定義了寬高的 DOM --> <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> // 基於準備好的dom,初始化echarts例項 var myChart = echarts.init(document.getElementById('main')); let datas = [ { value: '3793', name: '寶玉' }, { value: '1297', name: '賈母' }, { value: '1142', name: '鳳姐' }, { value: '1061', name: '王夫人' }, { value: '978', name: '老太太' }, { value: '688', name: '賈璉' }, { value: '620', name: '黛玉' }, { value: '602', name: '平兒' }, { value: '597', name: '寶釵' }, { value: '587', name: '襲人' } ]; option = { tooltip: { show: true, position: 'top', textStyle: { fontSize: 30 } }, series: [{ type: "wordCloud", // 網格大小,各項之間間距 gridSize: 60, // 形狀 circle 圓,cardioid 心, diamond 菱形, // triangle-forward 、triangle 三角,star五角星 shape: 'circle', // 字型大小範圍 sizeRange: [20, 70], // 文字旋轉角度範圍 rotationRange: [0, 0], // 旋轉步值 // rotationStep: 90, // 自定義圖形 // maskImage: maskImage, left: 'center', top: 'center', right: null, bottom: null, // 畫布寬 width: '90%', // 畫布高 height: '80%', // 是否渲染超出畫布的文字 drawOutOfBound: false, textStyle: { normal: { color: function () { return 'rgb(' + [ Math.round(Math.random() * 200 + 55), Math.round(Math.random() * 200 + 55), Math.round(Math.random() * 200 + 55) ].join(',') + ')'; } }, emphasis: { shadowBlur: 10, shadowColor: '#2ac' } }, data: datas }] }; myChart.setOption(option); </script> </body> </html>
執行結果:
2. 在柱狀圖的柱子中間顯示數值
注意:是在series的label中。
series: [
{
name: '2011年',
type: 'bar',
data: [18203, 23489, 29034, 104970, 131744, 630230],
// 修改第一組柱子為圓角的
itemStyle: {
barBorderRadius: 20
},
// 修改柱子間的距離
barCategoryGap: 80,
// 修改柱子的寬度
barWidth: 10,
// label可以顯示圖形上的文字標籤 如:在柱狀圖上顯示62%
//顯示柱子內的文字
label: {
show: true,
// 在柱子內部顯示inside
position: "inside",
//文字的顯示形式 {c}會自動地解析為 資料 data裡面的資料
formatter: "{c}%"
}
},
{
name: '2012年',
type: 'bar',
data: [19325, 23438, 31000, 121594, 134141, 681807]
}
]
3. 樹圖
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ECharts</title>
<!-- 引入剛剛下載的 ECharts 檔案 -->
<script src="js/echarts.js"></script>
</head>
<body>
<!-- 為 ECharts 準備一個定義了寬高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts例項
var myChart = echarts.init(document.getElementById('main'));
var data = { //節點資料資訊
"name": "某某大學",
"children": [
{
"name": "地理與資訊工程學院",
"children": [
{
"name": "地理資訊系統"
},
{
"name": "測繪工程",
"value": 3322
}
]
},
{
"name": "計算機與資訊工程學院",
"children": [
{ "name": "物聯網工程", "value": 8833 },
{ "name": "網路工程", "value": 1732 },
{ "name": "電腦科學與技術", "value": 3623 }
]
},
{
"name": "經管學院",
"children": [
{ "name": "財務管理", "value": 4116 }
]
}
]
};
option = {
tooltip: {
trigger: 'item',
},
legend: {
top: '2%',//圖例距離上部百分比
left: '3%',//圖例距離左端百分比
data: [{
name: 'tree1',
icon: 'rectangle'//圖例的圖示形狀為矩形
}],
},
series: [
{
type: 'tree',//樹圖型別
name: 'tree1',//樹的名稱
data: [data],//樹的資料來源於之前定義的data
top: '5%',//樹距離上部的百分比距離
left: '7%',//樹距離左部的百分比距離
bottom: '2%',//樹距離底部的百分比距離
right: '20%',//樹距離右部的百分比距離
symbolSize: 20,//節點的大小
label: {
position: 'top',//非葉子節點的標籤在上部
align: 'left'//左對齊
},
leaves: {
label: {
position: 'right',//葉子節點的標籤在節點右邊
align: 'left'
}
}
}
]
};
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
</script>
</body>
</html>
執行結果:
4. 矩形樹圖
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ECharts</title>
<!-- 引入剛剛下載的 ECharts 檔案 -->
<script src="js/echarts.js"></script>
</head>
<body>
<!-- 為 ECharts 準備一個定義了寬高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts例項
var myChart = echarts.init(document.getElementById('main'));
option = {
series: [{
type: 'treemap',
data: [{
name: 'A',
value: 10,
children: [{
name: 'A1',
value: 4
}, {
name: 'A2',
value: 6,
children: [{
name: 'A21',
value: 2
},{
name: 'A22',
value: 4 ,
children: [{
name: 'A221',
value: 3
},{
name: 'A222',
value: 1
}]
}]
}]
}, {
name: 'B',
value: 20,
children: [{
name: 'B1',
value: 20,
children: [{
name: 'B11',
value: 12
},{
name: 'B12',
value: 8
}]
}]
}]
}]
};
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
</script>
</body>
</html>
執行結果:
5. 關係圖
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ECharts</title>
<!-- 引入剛剛下載的 ECharts 檔案 -->
<script src="js/echarts.js"></script>
</head>
<body>
<!-- 為 ECharts 準備一個定義了寬高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts例項
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '關係圖',
top: '12%',
left: 'center'
},
label: {
normal: {
show: true
}
},
legend: {
x: "right",
show: true,
top: '20%',
data: ["男性", "女性"]
},
series: [
{
type: 'graph',//關係圖
layout: 'force',//力導向圖的佈局
symbolSize: 50,//節點大小
focusNodeAdjacency: true,//滑鼠懸停在節點上時,會隱藏和當前節點非直接連線的節點
categories: [{ //節點類別
name: '男性',
itemStyle: {
normal: {
color: "#009800",
}
}
}, {
name: '女性',
itemStyle: {
normal: {
color: "#4592FF",
}
}
}],
label: { //節點名稱
normal: {
show: true,
textStyle: {
fontSize: 20 //節點名稱顯示大小
},
}
},
force: {
repulsion: 1000 //節點之間的排斥力
},
edgeLabel: {
normal: {
show: true,
textStyle: {
fontSize: 10
},
formatter: "{c}"
}
},
data: [{
name: 'A',//節點名稱
category: 0,//節點型別
draggable: true,//節點是否可拖動
}, {
name: 'B',
category: 1,
draggable: true,
}, {
name: 'C',
category: 0,
draggable: true,
}, {
name: 'D',
category: 1,
draggable: true,
}, {
name: 'E',
category: 0,
draggable: true,
}, {
name: 'F',
category: 1,
draggable: true,
}, {
name: 'G',
category: 1,
draggable: true,
},{
name: 'H',
category: 1,
draggable: true,
}],
links: [{
source: 0,//關係的起點
target: 1,//關係的終點
value: '夫妻'//關係型別
},{
source: 0,
target: 3,
value: '父子'
}, {
source: 0,
target: 5,
value: '朋友'
}, {
source: 4,
target: 5,
value: '同事'
}, {
source: 2,
target: 7,
value: '夫妻'
}, {
source: 1,
target: 7,
value: '朋友'
}, {
source: 1,
target: 4,
value: '朋友'
}, {
source: 1,
target: 6,
value: '朋友'
}
],
lineStyle: { //關係連線線的樣式設定
normal: {
opacity: 0.9,//關係連線線的不透明度為0.9
width: 3,//關係連線線的寬度
curveness: 0//關係連線線的彎曲程度
}
}
}
]
};
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
</script>
</body>
</html>
執行結果: