1. 程式人生 > 其它 >07-詞雲、樹圖、矩形樹圖、關係圖

07-詞雲、樹圖、矩形樹圖、關係圖

目錄

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>

執行結果: