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>

运行结果:

posted @ 2022-05-31 11:20  道阻且长,行则将至。  阅读(486)  评论(0)    收藏  举报